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.