http://bugs.winehq.org/show_bug.cgi?id=5774
------- Additional Comments From damjan.jov@gmail.com 2007-25-05 04:15 ------- Well unfortunately Alexandre doesn't like the patch, and isn't convinced, so it hasn't been accepted (yet?) and so far won't be in the next version of wine.
Basically I showed that a UDP datagram with a bad checksum causes a spurious wakeup, that spurious wakeups break emule, and that trying a read prevents spurious wakeups, but Alexandre also wants to see that nothing else causes the spurious wakeups. I am of the opinion that any other causes of spurious wakeups should be separate bugs and my patch should be accepted regardless, but what can I do?
If you want to help, and have a lot of patience, run wireshark capturing all UDP traffic to a file, and run emule on an unpatched wine 0.9.37 with +winsock,+server,+tid (again to a file, it's many gigabytes long). Then somehow correlate the 2 logs (hard, wine's log doesn't have timestamps) and show what happens in the UDP traffic when WSARecvFrom returns error 10035 (EWOULDBLOCK) for a UDP socket (it should only happen once), I suspect you get a bad UDP checksum. Then I'll go and argue some more :-).