[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [Libevent-users] Re: error response from select on Windows



Hi Nick, thanks for the feedback.

The alternative is for the close() to happen in the "finalize
callback" that happens from the main thread in the new 0., and make
sure that happens after the event_del calls have had their effect.


I think this sounds like the right approach for closing socket descriptors; in general I'm more comfortable when resource deallocation is happening in a single-threaded context. What's more, I don't think that we should try to fix this issue by looping the select, as EBADF (or its WSA equivalent) is probably not a benign error message in most cases, but indication of a programming error.Â

I do think that checking each of the backends for other non-zero non-error codes and looping on those is a good idea (as already done with EINTR, for example). In my first message I mentioned WSAENETDOWN; internet chatter suggests that might happen occasionally when coming out of sleep and probably should not terminate the select-based event loop.
Â
Any interest in helping to track this down? :) ÂOne thing that might
help is a little test program that tries to provoke this bug. ÂBeyond
that, improving the finalize-callback code in the master branch would
also be of benefit.


Yeah, I'd be happy to help. I have a test program that I can adapt and publish. I haven't been following the development of bufferevent finalization in 2.1 but I will start taking a look.

Best,

--nate