http://bugs.winehq.org/show_bug.cgi?id=4619
------- Additional Comments From damjan.jov@gmail.com 2006-15-11 01:19 ------- Created an attachment (id=4099) --> (http://bugs.winehq.org/attachment.cgi?id=4099&action=view) patch to wake up select
So far, Jan's theory (that "Test failed: closesocket did not wakeup select" is responsible) seems the most probable to me. I've run some tests, and on Linux, this is standard behaviour: if one thread is polling with an infinite timeout, and another closes one of the sockets being polled, the poll never wakes up (whether you are using select, poll, or epoll). See http://lkml.org/lkml/2006/7/14/115 and http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6299188.
This is not a bug, it's a POSIX-compliant feature (see http://lkml.org/lkml/2006/7/14/225). A possible workaround is to call shutdown() before close(), which will wake up all selects on that socket.
So try this patch (cd wine-0.9.25; patch -p1 < wakeup_select.patch) and report how it goes.