Hang in fd_ebadf function

Marc-André Cournoyer macournoyer at gmail.com
Tue Jun 3 05:31:22 CEST 2008


What I'm doing is: if the EV_ERROR bit is set, close the connection  
right away. I'm also closing the connection if there's any error send- 
ing or recv-ing on a socket.

By "it works" I meant that it stoped hanging when there was an error  
on the socket before the send or recv.

Let me know if you think I'm doing something wrong.

But I know there is still something weird in there when using Ruby  
threads, I'm trying to figure it out.

thx,
m-a

On 30-May-08, at 6:51 PM, Marc Lehmann wrote:

> On Fri, May 30, 2008 at 10:12:45AM -0400, Marc-André Cournoyer <macournoyer at gmail.com 
> > wrote:
>> Perfect, it works now w/ checking the EV_ERROR bit, thx Marc!
>
> No, it doesn't - if you get EV_ERROR for this case then your code is  
> buggy
> - you *must not* have active watchers with illegal file descriptors.
>
> The fact that libev tries to work around your bug doesn't mean it  
> works
> (in fact, you are relying on luck because this bug isn't 100%  
> detectable
> in libev).
>
> -- 
>                The choice of a       Deliantra, the free code 
> +content MORPG
>      -----==-     _GNU_              http://www.deliantra.net
>      ----==-- _       generation
>      ---==---(_)__  __ ____  __      Marc Lehmann
>      --==---/ / _ \/ // /\ \/ /      pcg at goof.com
>      -=====/_/_//_/\_,_/ /_/\_\




More information about the libev mailing list