Hi,

I am looking at bug #12048 http://bugs.winehq.org/show_bug.cgi?id=12048

>From a relay trace it is easy enough to find where the app is getting
dead-locked and why it should not. 

It is calling recv() on a socket that was previously:
1) set to blocking with a WS_ioctlsock() call with cmd WS_FIONBIO
2) AsyncSelect()'ed that should make the socket non-blocking.

The first call set the unix file descriptor to blocking:

   fcntl( fd, F_SETFL, 0 );

while the second does not touch the unix fd. This leaves the unix file
descriptor in the blocking state and the unix recvmsg() call will not
terminate.

I thought the unix file descriptor should always by non-blocking, but it
is a while since I was looking at socket code. Hopefully someone can
tell me if I am barking up the right tree.

Is what I think correct, and should the fcntl()'s simply go. Or should
AsyncSelect() set the unix fd to non blocking instead?

Rein. 


Reply via email to