[Bug 3777] Calling closesocket() will not eject any accept()s
waiting in blocking mode...
Wine Bugs
wine-bugs at winehq.org
Wed May 10 04:17:25 CDT 2006
http://bugs.winehq.org/show_bug.cgi?id=3777
------- Additional Comments From m.goemmel at compulab.de 2006-10-05 04:17 -------
Eric mailed me this some time ago, so I post it here before it gets totally
lost:
the normal way of working is:
- the client references an object in the server (thru a windows-socket, which
is in fact a server handle)
- the server in its object references the unix-socket (fd)
however, some wait operations are done in the client by:
- retrieving from the server the unix-fd
- waiting on that unix-fd
what happens in your case is:
- server has a unix-fd opened on the socket
- client get one copy of the unix-fd (to wait on)
- client blocks on it (select)
- another thread (client) closes the windows-socket
- another thread closes the handle (from socket)
- server is called, and object is destroyed in server, hence closing the unix-
fd (from server)
at this point,
- the windows object in server for the socket is destroyed
- but the unix object (in unix kernel) is not destroyed as there's still a
reference to it (thru a unix-fd) (the one used in the select)
Thanks
Markus
--
Configure bugmail: http://bugs.winehq.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.
More information about the wine-bugs
mailing list