Message197053
> Richard Oudkerk added the comment:
>
> I remember wondering at one time why EPOLLNVAL did not exist, and realizing that closed fds are just silently unregistered by epoll().
Exactly.
> I guess the issue is that some of the selectors indicate a bad fd on registration, and others do it when polled.
>
> On registration On poll
> ----------------------------------------------------------------
> SelectSelector No Raises OSError
> PollSelector No No (EVENT_READ or EVENT_WRITE)
> EpollSelector Raises OSError No
> KqueueSelector ? ?
Kqueue raises OSError upon registration. Not sure about poll().
> It would be easiest to relax the test, perhaps by just checking that conn.poll(0) raises or returns True.
That's what I think too. Apparently, the test was added for this
issue: http://bugs.python.org/issue3321
Basically, the goal was to check that conn.poll() wouldn't crash if
passed an invalid FD (which can happen if you register a FD greater
than FD_SETSIZE in a fd_set).
So relaxing the check would still make sense.
> Or maybe PollSelector.select() should raise OSError if POLLNVAL is indicated. That would match the behaviour of SelectSelector.select().
Yes, that would be a possibility. I'll have to give it some more thought. |
|
Date |
User |
Action |
Args |
2013-09-06 06:57:40 | neologix | set | recipients:
+ neologix, giampaolo.rodola, python-dev, sbt |
2013-09-06 06:57:40 | neologix | link | issue18934 messages |
2013-09-06 06:57:39 | neologix | create | |
|