Hello,
I have an app running under Wine called Auctionpay Event Software. It's currently using TCL to implement a SOAP interface. I've found a bug that can be reproduced with two lines of TCL:
package require http
http::geturl http://www.google.com http://www.google.com/ -timeout 0 -query "asdf"
9 times out of 10 this command will fail to return a page. Sometimes the command works. I've traced it down the write event not being received by TCL. Looking into Wine, it appears upon connecting to a socket a user message is sent (WM_USER+2). In the handler WSAAsyncSelect is being called. WSAAsyncSelect somehow is triggering the message loop again (possibly in a different thread?!), and the write event seems to be processed before the original WM_USER+2 is completed. This leads to no write event, which leads to no query being posted to the socket, and finally leading to both computers just sitting there until the server drops the socket.
Yet 1/10, it seems that the interrupting message processor interrupts the main message loop as WM_USER+2 message handler has exited/is exiting, and the write message is properly processed and the operation works fine.
I have been having a terrible time working with winedbg and setting breakpoints (seems to cause crashes). Is there someone interested in working on this bug or possible just shedding some light on just what might be going on to cause the main message loop to be interrupted in a race condition like this?
Thanks,
Ryan