[Python-ideas] WSAPoll and tulip
Trent Nelson
trent at snakebite.org
Tue Nov 27 16:03:31 CET 2012
On Tue, Nov 27, 2012 at 06:42:04AM -0800, Antoine Pitrou wrote:
>
> Hi,
>
> Le Tue, 27 Nov 2012 07:33:25 -0500,
> Trent Nelson <trent at snakebite.org> a écrit :
> > So, it basically works. poll() on Windows, who would have
> > thought.
> >
> > It's almost impossible to test with our current infrastructure;
> > all our unit tests seem to pass pipes and other
> > non-Winsock-backed-socks to poll(), which, like select()-on-Windows,
> > isn't supported.
>
> Well, then you should write new tests that don't rely on pipes.
> There's no reason it can't be done, and there are already lots of
> examples of tests using TCP sockets in our test suite. It will also be
> a nice improvement to the current test suite for Unix platforms.
Agreed, there's more work required. It's on the list.
> > Visual Studio's debugger to try figure out what the heck was going
> > on. I believe the `yield from` aspect made that so much more of
> > an arduous affair -- one moment I'm in selectmodule.c's getaddrinfo(),
> > then I'm suddenly deep in the bowels of some cryptic eval frame
> > black magic, then one 'step' later, I'm over in some completely
> > different part of selectmodule.c, and so on.
>
> I'm not sure why you're using Visual Studio to debug Python code?
> It sounds like you want something higher-level, e.g. Python print()
> calls or pdb.
Ah, right. So, I was trying to figure out why poll was barfing up
an WSAError on whatever it was being asked to poll. So, I set out
to find what it was polling, via breakpoints in register().
That pointed to an fd with value 3. That seemed a little strange,
as all my other socket tests consistently had socket fd values above
250-something.
So, I wanted to track down where that fd was coming from, thinking
it was related to the first poll()/register() instance I could find
in getaddrinfo(). It wasn't, and through combined use of *both* pdb
and VS, I eventually stumbled onto the attempt to poll os.pipe()
FDs. I think.
(There were also other issues that I skipped over in the e-mail;
like figuring out I had to &= ~POLLPRI in order for the poll call
to work at all.)
And... Visual Studio's debugger is sublime. I'll jump at the chance
to fire it up if I think it'll help me debug an issue. You get much
better situational awareness than stepping through with gdb.
Trent.
More information about the Python-ideas
mailing list