http://bugs.winehq.org/show_bug.cgi?id=29499
Bug #: 29499 Summary: Age of Empires II freezes when disconnecting from a multiplayer room/game using native DirectPlay DLL Product: Wine Version: 1.3.36 Platform: x86-64 URL: http://download.cnet.com/Age-of-Empires-II-Trial-Versi on/3000-2099_4-10725533.html OS/Version: Mac OS X Status: UNCONFIRMED Severity: normal Priority: P2 Component: directx-dplay AssignedTo: wine-bugs@winehq.org ReportedBy: lapommegolden@gmail.com Classification: Unclassified
Created attachment 38200 --> http://bugs.winehq.org/attachment.cgi?id=38200 wine log (1.3.36)
STEPS TO REPRODUCE THE BUG:
1. Download & Install Age of Empires II Trial: - http://download.cnet.com/Age-of-Empires-II-Trial-Version/3000-2099_4-1072553... OR - http://download.microsoft.com/download/aoeaok/Trial/1.0/WIN98/EN-US/AoE2demo...
2. Install "directplay" from winetricks
3. Launch AOE II (You may need to set DirectDrawRenderer to gdi if opengl renderer fails on some platforms, which is another bug: http://bugs.winehq.org/show_bug.cgi?id=29261) http://wiki.winehq.org/UsefulRegistryKeys
4. Attempt to start a multiplayer game (Internet TCP/IP)
5. Click CANCEL now to try to disconnect from a multiplayer room but AOE II will now freeze even the game did not even ever get started.
http://bugs.winehq.org/show_bug.cgi?id=29499
PommeGolden lapommegolden@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
http://bugs.winehq.org/show_bug.cgi?id=29499
PommeGolden lapommegolden@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #38200|0 |1 is obsolete| |
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #1 from PommeGolden lapommegolden@gmail.com 2011-12-31 09:02:04 CST --- Created attachment 38201 --> http://bugs.winehq.org/attachment.cgi?id=38201 wine log (1.3.36)
wine log (reuploaded)
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #2 from Alex Henrie alexhenrie24@gmail.com 2012-02-03 23:02:47 CST --- Created attachment 38687 --> http://bugs.winehq.org/attachment.cgi?id=38687 stderr
Confirming on wine-1.4-rc1. Has Wine always had this bug?
http://bugs.winehq.org/show_bug.cgi?id=29499
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #38687|application/octet-stream |text/plain mime type| |
http://bugs.winehq.org/show_bug.cgi?id=29499
K1773R K1773R@darkgamex.ch changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |K1773R@darkgamex.ch
--- Comment #3 from K1773R K1773R@darkgamex.ch 2012-02-04 01:21:23 CST --- i can confirm this bug!
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #4 from K1773R K1773R@darkgamex.ch 2012-02-04 01:22:06 CST --- (In reply to comment #2)
Created attachment 38687 [details] stderr
Confirming on wine-1.4-rc1. Has Wine always had this bug?
yes, this was always a problem.
http://bugs.winehq.org/show_bug.cgi?id=29499
Warday warday27@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |warday27@hotmail.com
--- Comment #5 from Warday warday27@hotmail.com 2012-02-04 10:15:12 CST --- I can confirm it too. It always happen. It doesn't care if you kick it in the middle of the game or in the end.
http://bugs.winehq.org/show_bug.cgi?id=29499
Vitaliy Margolen vitaliy-bugzilla@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Severity|normal |minor
--- Comment #6 from Vitaliy Margolen vitaliy-bugzilla@kievinfo.com 2012-02-04 11:25:23 CST --- Confirming per comment 5.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #7 from PommeGolden lapommegolden@gmail.com 2012-02-05 17:22:37 CST --- Yes, wine always has this bug, not regression.
Still present in 1.4-rc2
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #8 from K1773R K1773R@darkgamex.ch 2012-02-05 17:25:16 CST --- this was already a problem back in wine 0.9 http://bugs.winehq.org/show_bug.cgi?id=5534
http://bugs.winehq.org/show_bug.cgi?id=29499
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |alexhenrie24@gmail.com
--- Comment #9 from Alex Henrie alexhenrie24@gmail.com 2012-02-21 00:24:04 CST --- winedbg give the following backtrace:
=>0 0xf771242e __kernel_vsyscall+0xe() in [vdso].so (0x0033d3a4) 1 0xf757abcb __libc_read+0x4a() in libpthread.so.0 (0x0033d3a4) 2 0x7bc77758 in ntdll (+0x67757) (0x0033d3a4) 3 0x7bc79e6b in ntdll (+0x69e6a) (0x0033d5c4) 4 0x7bc79f6b NtWaitForMultipleObjects+0x5a() in ntdll (0x0033d5f4) 5 0x7b86c76f WaitForMultipleObjectsEx+0xee() in kernel32 (0x0033d744) 6 0x7b86c88c WaitForSingleObject+0x3b() in kernel32 (0x0033d774) 7 0x5df07363 in dpwsockx (+0x7362) (0x0033d784) 8 0x5df07551 in dpwsockx (+0x7550) (0x0033d7a0) 9 0x5e090eb3 in dplayx (+0x10eb2) (0x0033d7fc)
CPU usage hovers at about 43% for Age of Empires II and 39% for wineserver. DirectPlay appears to be calling WaitForSingleObject over and over. Maybe it doesn't like the result it's getting?
http://bugs.winehq.org/show_bug.cgi?id=29499
Rohan Jain crodjer@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |crodjer@gmail.com
--- Comment #10 from Rohan Jain crodjer@gmail.com 2012-02-22 04:15:30 CST --- I confirm this bug in wine version 1.4~3 too.
OS: debian-sid, linux 3.2.0-1-amd64
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #11 from Alex Henrie alexhenrie24@gmail.com 2012-02-26 00:57:59 CST --- Created attachment 39082 --> http://bugs.winehq.org/attachment.cgi?id=39082 Patch that fixes Age of Empires II but probably breaks something else
I came up with this patch that fixes Age of Empires II, but it fails the test suite and probably breaks something else too. I'm open to ideas.
http://bugs.winehq.org/show_bug.cgi?id=29499
Dmitry Timoshkov dmitry@baikal.ru changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1
--- Comment #12 from Dmitry Timoshkov dmitry@baikal.ru 2012-02-26 04:00:56 CST --- (In reply to comment #11)
I came up with this patch that fixes Age of Empires II, but it fails the test suite and probably breaks something else too. I'm open to ideas.
You may try at least check the errno and see if it helps to figure out what is going on. Writing a test case is also a good idea.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #13 from PommeGolden lapommegolden@gmail.com 2012-02-26 08:31:11 CST --- (In reply to comment #11)
Created attachment 39082 [details] Patch that fixes Age of Empires II but probably breaks something else
I came up with this patch that fixes Age of Empires II, but it fails the test suite and probably breaks something else too. I'm open to ideas.
i can confirm the patch does work for AOE 2 thanks! wine 1.4-rc5
http://bugs.winehq.org/show_bug.cgi?id=29499
Jerome Leclanche adys.wh@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |patch CC| |adys.wh@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #14 from Alex Henrie alexhenrie24@gmail.com 2012-02-28 01:36:59 CST --- Created attachment 39124 --> http://bugs.winehq.org/attachment.cgi?id=39124 Another patch that fixes Age of Empires II but probably breaks something else
My best guess is that one of the sockets the game opens is blocking when it should not block. If all sockets are treated as nonblocking, the problem goes away.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #15 from PommeGolden lapommegolden@gmail.com 2012-02-28 05:42:03 CST --- (In reply to comment #14)
Created attachment 39124 [details] Another patch that fixes Age of Empires II but probably breaks something else
My best guess is that one of the sockets the game opens is blocking when it should not block. If all sockets are treated as nonblocking, the problem goes away.
this patch also works too thanks
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #16 from Bruno Jesus 00cpxxx@gmail.com 2012-03-03 19:19:22 CST --- Created attachment 39171 --> http://bugs.winehq.org/attachment.cgi?id=39171 check bad events patch
Please, test the attached patch. It works for me and passes the socket tests. Usually it takes at most 6 seconds to cancel and return to the main screen here, a similar delay can be seen in my windows test.
http://bugs.winehq.org/show_bug.cgi?id=29499
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #39082|0 |1 is obsolete| |
http://bugs.winehq.org/show_bug.cgi?id=29499
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #39124|0 |1 is obsolete| |
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #17 from Alex Henrie alexhenrie24@gmail.com 2012-03-03 19:52:47 CST --- Your patch works for me, thanks! I can also confirm that it does not break the test suite. Have you thought about adding another test to help prevent regressions of this bug?
http://bugs.winehq.org/show_bug.cgi?id=29499
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |00cpxxx@gmail.com
--- Comment #18 from Bruno Jesus 00cpxxx@gmail.com 2012-03-03 20:11:43 CST --- I don't know how the bug is triggered (what type of socket and what functions are called) so I don't know what to test =)
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #19 from PommeGolden lapommegolden@gmail.com 2012-03-03 23:23:04 CST --- (In reply to comment #16)
Created attachment 39171 [details] check bad events patch
Please, test the attached patch. It works for me and passes the socket tests. Usually it takes at most 6 seconds to cancel and return to the main screen here, a similar delay can be seen in my windows test.
Bruno's patch does NOT seem to work for me
AOE2 > Multiplayer > Create > Cancel > AOE2 will freeze (I tried multiple times & waited for more than a full minute)
Patched against 1.4-rc6 http://bugs.winehq.org/attachment.cgi?id=39171
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #20 from Bruno Jesus 00cpxxx@gmail.com 2012-03-03 23:56:41 CST --- Created attachment 39176 --> http://bugs.winehq.org/attachment.cgi?id=39176 print test
Please, attach a WINEDEBUG=+winsock with that patch.
After that please try the attached patch using WINEDEBUG=-all. What I'm trying to see is if the function remains stuck in the forever loop or if it's being called an infinite amount of times by the application. If the function is stuck the console will be flooded with the step number growing. After the freeze look at the console and copy & paste 4 lines of the output after killing the app. The output should look like <step=XXX revents=XXX> (repeated over and over).
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #21 from Alex Henrie alexhenrie24@gmail.com 2012-03-04 01:44:27 CST --- Created attachment 39179 --> http://bugs.winehq.org/attachment.cgi?id=39179 check bad events patch with POLLNVAL check
Are you on Mac OS? I wonder if Mac OS sets POLLNVAL instead of POLLHUP. It's worth a try.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #22 from PommeGolden lapommegolden@gmail.com 2012-03-04 04:57:09 CST --- Created attachment 39181 --> http://bugs.winehq.org/attachment.cgi?id=39181 WINEDEBUG=+winsock running Bruno's 1st patch
Alex: Yes i'm on Mac OS X
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #23 from PommeGolden lapommegolden@gmail.com 2012-03-04 07:23:55 CST --- (In reply to comment #20)
Created attachment 39176 [details] print test
Please, attach a WINEDEBUG=+winsock with that patch.
After that please try the attached patch using WINEDEBUG=-all. What I'm trying to see is if the function remains stuck in the forever loop or if it's being called an infinite amount of times by the application. If the function is stuck the console will be flooded with the step number growing. After the freeze look at the console and copy & paste 4 lines of the output after killing the app. The output should look like <step=XXX revents=XXX> (repeated over and over).
Print test patch patched against wine 1.4-rc6
I can't find anything looks like <step=XXX revents=XXX>???
WINEDEBUG=-all
XIO: fatal IO error 35 (Resource temporarily unavailable) on X server ":3817" after 22 requests (13 known processed) with 0 events remaining.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #24 from Bruno Jesus 00cpxxx@gmail.com 2012-03-04 10:08:05 CST --- The bug is about MacOS, I missed that in the bug summary, sorry...
POLLNVAL would only happen if the fd is invalid so I don't think it's related. The fact that my printf patch failed shows that the function gets stuck in a different place in Mac.
The ws2_32 code is know not to pass the tests in MacOs as seen in http://test.winehq.org/data/1517f3df30232daf3ccfc88e53f1377d0c5a2a20/mac_fg-... so one of the existing errors may be affecting this bug.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #25 from PommeGolden lapommegolden@gmail.com 2012-03-05 04:53:40 CST --- Created attachment 39203 --> http://bugs.winehq.org/attachment.cgi?id=39203 WINEDEBUG=+winsock POLLNVAL check
http://bugs.winehq.org/show_bug.cgi?id=29499
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #39179|0 |1 is obsolete| |
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #26 from Alex Henrie alexhenrie24@gmail.com 2012-03-06 11:56:41 CST --- Created attachment 39212 --> http://bugs.winehq.org/attachment.cgi?id=39212 check bad events patch with POLLHUP in events
After much searching, I found the following comment in Chromium's source code:
* Note that we are relying on a corner case of poll() here. * Using POLLHUP in "events" is not meaningful on Linux, which is * documented as ignoring POLLHUP as an input argument and will * return POLLHUP in "revents" even if it not present in "events". * On Mac OS X, however, passing events == 0 does not work if we * want to get POLLHUP. We are in the unusual situation of * waiting for a socket to become *un*writable.
http://src.chromium.org/native_client/trunk/src/native_client/src/trusted/de...
I revised Bruno's patch to add POLLERR and POLLHUP to the events parameter. PommeGolden, would you test this new patch?
http://bugs.winehq.org/show_bug.cgi?id=29499
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #39212|0 |1 is obsolete| |
--- Comment #27 from Alex Henrie alexhenrie24@gmail.com 2012-03-06 15:57:35 CST --- Created attachment 39215 --> http://bugs.winehq.org/attachment.cgi?id=39215 check bad events patch with POLLHUP in events (try 2)
I forgot the parentheses...
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #28 from Bruno Jesus 00cpxxx@gmail.com 2012-03-06 19:25:15 CST --- I don't think it makes sense in setting that events in this case. POLLIN (and sometimes POLLPRI) is already set so the events variable is never 0 which seems enough for MacOS. Setting POLLHUP in events in the example code was possibly a hack to get around the zeroed events variable. Even the poll() man on macos says that POLLHUP/POLLERR are ignored as expected events [1].
Also you are checking for a combined POLLERR|POLLHUP and IMO you should be checking for the flags separately, they may not come together in every OS.
Your original patches for this bug led me to understand that there was an infinite loop between recvmsg and poll. recvmsg returns -1 and then poll returns 1 showing that there is still something to do, then in the next loop iteration recvmsg returns -1 ... and so on. What I was trying to do with that patch was check what kind of event poll was returning so I could filter and break the infinite loop but that seems not enough for MacOS. The lack of console printfs from my last patch shows that poll may never be returning (due to the timeout = -1 which is used and tells poll to way forever).
[1] https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManP...
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #29 from PommeGolden lapommegolden@gmail.com 2012-03-07 09:28:51 CST --- Created attachment 39228 --> http://bugs.winehq.org/attachment.cgi?id=39228 WINEDEBUG=+winsock for check bad events patch with POLLHUP in events (try 2)
http://bugs.winehq.org/show_bug.cgi?id=29499
PommeGolden lapommegolden@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #39228|application/octet-stream |text/plain mime type| |
http://bugs.winehq.org/show_bug.cgi?id=29499
Alex Henrie alexhenrie24@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #39215|0 |1 is obsolete| |
--- Comment #30 from Alex Henrie alexhenrie24@gmail.com 2012-03-07 12:19:23 CST --- Comment on attachment 39215 --> http://bugs.winehq.org/attachment.cgi?id=39215 check bad events patch with POLLHUP in events (try 2)
Bruno, you're right, for some reason poll() simply does not return on Mac OS X.
Just so you know, these two lines are mathematically equivalent: (pfd.revents & POLLERR) || (pfd.revents & POLLHUP) pfd.revents & (POLLERR|POLLHUP)
Thanks for your help in debugging. Are you still trying to find a solution? I am out of ideas.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #31 from Bruno Jesus 00cpxxx@gmail.com 2012-03-09 21:34:40 CST --- (In reply to comment #30)
Just so you know, these two lines are mathematically equivalent: (pfd.revents & POLLERR) || (pfd.revents & POLLHUP) pfd.revents & (POLLERR|POLLHUP)
I don't think so =) The second one implies that both bits need to be set. The first one can detect the bits separately. Did you misread the || as &&?
Thanks for your help in debugging. Are you still trying to find a solution? I am out of ideas.
Yes, I'll be trying to debug the application remotely using Austin English osx, I'm not sure it will work as I expect (X forwarding between osx and linux) but at least I'll be able to test and try to fix the remaining socket issues failing currently (which might be related).
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #32 from Dmitry Timoshkov dmitry@baikal.ru 2012-03-10 06:41:01 CST --- (In reply to comment #31)
Just so you know, these two lines are mathematically equivalent: (pfd.revents & POLLERR) || (pfd.revents & POLLHUP) pfd.revents & (POLLERR|POLLHUP)
I don't think so =) The second one implies that both bits need to be set. The first one can detect the bits separately. Did you misread the || as &&?
Alex is right, 2 lines above do the same thing.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #33 from Bruno Jesus 00cpxxx@gmail.com 2012-03-12 19:58:04 CDT --- You're both right, sorry for the noise =)
Although I could run winecfg/regedit remotely unfortunately I could not run the game forwarding X due to issues with direct3d, so I'll try at least to check on the know tests that are not working and that I can try in the console.
http://bugs.winehq.org/show_bug.cgi?id=29499
Tilman Blumenbach tilman@dataoverload.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |tilman@dataoverload.de
http://bugs.winehq.org/show_bug.cgi?id=29499
felix moreno info@justdust.es changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |info@justdust.es
--- Comment #34 from felix moreno info@justdust.es 2012-09-24 03:40:33 CDT --- I confirm the bug too using wine 1.5.12, I hope it will fixed in official wine release soon and perhaps a directconnect open implementation in the future. bests
http://bugs.winehq.org/show_bug.cgi?id=29499
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |paulthetall@gmail.com
--- Comment #35 from Bruno Jesus 00cpxxx@gmail.com 2012-10-09 15:19:59 CDT --- *** Bug 31928 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #36 from Paul The Tall paulthetall@gmail.com 2012-10-09 15:24:38 CDT --- Tons of games (all using directplay/ tcp/ip) are infected. Some of the games:
Age of Empires, Age of Empires 2, Commandos 3, Baldurs Gate 1 + 2, Praetorians, Imperial glory, Fallout series, and loads of others...
Here the +winsock output for age of Empires 2: http://pastebin.com/t1DXwDBS
Hope you guys can find a fix soon :) Games should exit proper when ending a multiplayer game. Wine should be advanced enough to fix this bug right? Many thanks in avdance
http://bugs.winehq.org/show_bug.cgi?id=29499
Paul The Tall paulthetall@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |austinenglish@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #37 from Paul The Tall paulthetall@gmail.com 2012-10-09 15:27:16 CDT --- It would be really awesome if Austin could help with this one too. He is such big help in all the Mac related stuff in wine.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #38 from Bruno Jesus 00cpxxx@gmail.com 2012-10-09 15:38:26 CDT --- The patch from comment 16 fixes it in linux, you could try again in osx, it is known not to work according to comment 19 but time has passed and changes have been made to ws2_32.
I think Erich Hoover will be able to fix this somehow sometime.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #39 from Paul The Tall paulthetall@gmail.com 2012-10-09 15:40:47 CDT --- (In reply to comment #38)
The patch from comment 16 fixes it in linux, you could try again in osx, it is known not to work according to comment 19 but time has passed and changes have been made to ws2_32.
I think Erich Hoover will be able to fix this somehow sometime.
Thats very nice, but I have no clue how to apply such a fix....
http://bugs.winehq.org/show_bug.cgi?id=29499
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|austinenglish@gmail.com |
--- Comment #40 from Austin English austinenglish@gmail.com 2012-10-09 15:43:54 CDT --- (In reply to comment #36)
Tons of games (all using directplay/ tcp/ip) are infected. Some of the games:
Age of Empires, Age of Empires 2, Commandos 3, Baldurs Gate 1 + 2, Praetorians, Imperial glory, Fallout series, and loads of others...
Here the +winsock output for age of Empires 2: http://pastebin.com/t1DXwDBS
You should attach logs to the bug.
(In reply to comment #37)
It would be really awesome if Austin could help with this one too. He is such big help in all the Mac related stuff in wine.
I think you confused me with someone else, I rarely do Mac stuff (my mac mini is too weak)..
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #41 from Paul The Tall paulthetall@gmail.com 2012-10-09 15:49:21 CDT --- Created attachment 42054 --> http://bugs.winehq.org/attachment.cgi?id=42054 +Winsock debug
Yes Sir! Here it is.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #42 from felix moreno info@justdust.es 2012-10-09 17:19:30 CDT --- Please fix it asap, I play every weekend using ubuntu with my friends that also use ubuntu to play age of empires and its very crapy to reboot all of us after every match :P.
http://bugs.winehq.org/show_bug.cgi?id=29499
raiden_pwns@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |raiden_pwns@hotmail.com
--- Comment #43 from raiden_pwns@hotmail.com 2012-11-10 14:30:02 CST --- (In reply to comment #16)
Created attachment 39171 [details] check bad events patch
Please, test the attached patch. It works for me and passes the socket tests. Usually it takes at most 6 seconds to cancel and return to the main screen here, a similar delay can be seen in my windows test.
How do I install the patch to Ubuntu Linux? How do I even download it from this site? :D
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #44 from raiden_pwns@hotmail.com 2012-11-11 07:38:11 CST --- (In reply to comment #43)
(In reply to comment #16)
Created attachment 39171 [details] check bad events patch
Please, test the attached patch. It works for me and passes the socket tests. Usually it takes at most 6 seconds to cancel and return to the main screen here, a similar delay can be seen in my windows test.
How do I install the patch to Ubuntu Linux? How do I even download it from this site? :D
Well, I did some reading and I managed to wget the text file to aoe2.patch. When I go to /.wine/drive_c/windows/system32 and try to apply the patch with patch -p0 < ~/aoe2.patch it says it can't find the file to patch, so I type in ws2_32.dll. Then I get 2 out of 2 hunks FAILED. What am I doing wrong?
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #45 from Bruno Jesus 00cpxxx@gmail.com 2012-11-11 08:31:55 CST --- (In reply to comment #43)
How do I install the patch to Ubuntu Linux? How do I even download it from this site? :D
You need to compile wine from source to be able to apply patches. Please read http://wiki.winehq.org/Patching and if you find issues try IRC or the forums.
http://bugs.winehq.org/show_bug.cgi?id=29499
Brandon Corujo haku08879@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |haku08879@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #46 from Paul The Tall paulthetall@gmail.com 2012-12-31 03:46:26 CST --- Any movement? Please dev guys it affects so many games....it has bin there so long. A will donate 30 euros (I know it is not much, but I am not very rich) to the one fixing it! Many many many people will be thankfull to you guys and tones of Mac users ;)
http://bugs.winehq.org/show_bug.cgi?id=29499
Jonas Jelten jonas.jelten@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jonas.jelten@gmail.com
http://bugs.winehq.org/show_bug.cgi?id=29499
Mårten maarten.kjellsson@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |maarten.kjellsson@gmail.com
--- Comment #47 from Mårten maarten.kjellsson@gmail.com 2013-01-08 06:48:42 CST --- I've managed to get the patch working on a mac by following Brunos guessings in comment 28. It seems the "timeout" variable sent to poll() when on a mac is -1, wich results in poll beeing blocking. I just set the variable "timeout" to something other than -1 (in my test case i used 15 as timeout). This solved the problem and I haven't noticed any other issues with it but this is most certainly not the correct way of solving the problem.
As I'm not familiar with the wine code tree at all, I'm not sure where the problem actually derives from. Either the defines "SO_RCVTIMEO" and "SO_SNDTIMEO" are not set when compiling for mac or the function get_rcvsnd_timeo(int, int) isn't able to get the correct timeout from the socket on mac.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #48 from Paul The Tall paulthetall@gmail.com 2013-01-08 07:12:20 CST --- (In reply to comment #47)
I've managed to get the patch working on a mac by following Brunos guessings in comment 28. It seems the "timeout" variable sent to poll() when on a mac is -1, wich results in poll beeing blocking. I just set the variable "timeout" to something other than -1 (in my test case i used 15 as timeout). This solved the problem and I haven't noticed any other issues with it but this is most certainly not the correct way of solving the problem.
As I'm not familiar with the wine code tree at all, I'm not sure where the problem actually derives from. Either the defines "SO_RCVTIMEO" and "SO_SNDTIMEO" are not set when compiling for mac or the function get_rcvsnd_timeo(int, int) isn't able to get the correct timeout from the socket on mac.
Awesome to hear! Can you step by step describe what you did so I can test it too? I checked the links of bruno, but I could not see how to make this practical.
Many thanks in advance!
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #49 from Bruno Jesus 00cpxxx@gmail.com 2013-01-08 10:18:18 CST --- As far as I remember the socket was already closed when WS_recv was called, that's why recvmsg returns -1 and poll waits forever with and invalid fd instead of returning and setting errno = EBADFD. I'll try a few things today, the main problem is that I can only test in linux.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #50 from Paul The Tall paulthetall@gmail.com 2013-01-08 10:20:48 CST --- (In reply to comment #49)
As far as I remember the socket was already closed when WS_recv was called, that's why recvmsg returns -1 and poll waits forever with and invalid fd instead of returning and setting errno = EBADFD. I'll try a few things today, the main problem is that I can only test in linux.
thats ok, issue is on Linux too (as far as i know). So, I think its a related issue.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #51 from Bruno Jesus 00cpxxx@gmail.com 2013-01-08 10:25:09 CST --- The issue is on linux too but may patch from comment 16 fixes the issue in linux but not osx.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #52 from Bruno Jesus 00cpxxx@gmail.com 2013-01-08 22:53:34 CST --- Created attachment 43129 --> http://bugs.winehq.org/attachment.cgi?id=43129 Hack force socket to block before closing
Please give the attached patch a try. This is a hack based on the same problem from bug 22291. It solves the issue for linux and needs tests for osx, remember that the cancel process takes up to 6 seconds on native too.
Due to the different nature of the UDP socket currently wine has a problem in the closure process and this makes the socket hang, there are other 4 or 5 bugs related to this same issue (I can't remember their numbers now).
http://bugs.winehq.org/show_bug.cgi?id=29499
Patryk predtech2@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |predtech2@gmail.com
--- Comment #53 from Patryk predtech2@gmail.com 2013-01-09 04:02:58 CST --- @Bruno This new patch unfortunately does not work for OSX. Hovewer hack Mårten suggested with changing timeout variable works without flaw.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #54 from Paul The Tall paulthetall@gmail.com 2013-01-09 04:17:56 CST --- (In reply to comment #53)
@Bruno This new patch unfortunately does not work for OSX. Hovewer hack Mårten suggested with changing timeout variable works without flaw.
wow wow, wait, please tell step by step what you guys did practicly so I can test it too. Many thanks!
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #55 from Mårten maarten.kjellsson@gmail.com 2013-01-09 06:01:19 CST --- What I did to make it work was just to add a row "timeout = 15;" just above the row "if (!timeout || !poll( &pfd, 1, timeout ))", that Brunos patch in comment 16 is looking for. This, as I previously stated is not the correct way of solving the problem. But it did make it go away on OSX 10.7.
After I inserted the "timeout = 15;" and brunos patch from comment 16 I let wineskin compiled it using latest from git.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #56 from Paul The Tall paulthetall@gmail.com 2013-01-09 06:18:13 CST --- (In reply to comment #55)
What I did to make it work was just to add a row "timeout = 15;" just above the row "if (!timeout || !poll( &pfd, 1, timeout ))", that Brunos patch in comment 16 is looking for. This, as I previously stated is not the correct way of solving the problem. But it did make it go away on OSX 10.7.
After I inserted the "timeout = 15;" and brunos patch from comment 16 I let wineskin compiled it using latest from git.
Thanks, I will check it out!
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #57 from Paul The Tall paulthetall@gmail.com 2013-01-09 16:22:27 CST --- Darn i got this: when using the patch below. help?
iMac-van-Paul-Bertelink:wine-1.5.19 paulthetall$ patch -p1 < directplay.diff missing header for unified diff at line 10 of patch patching file dlls/ws2_32/socket.c Hunk #1 FAILED at 5822. Hunk #2 FAILED at 5832. patch unexpectedly ends in middle of line 2 out of 2 hunks FAILED -- saving rejects to file dlls/ws2_32/socket.c.rej patch unexpectedly ends in middle of line
--- a/dlls/ws2_32/socket.c +++ a/dlls/ws2_32/socket.c @@ -5822,6 +5822,7 @@ static int WS2_recv_base( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount,
pfd.fd = fd; pfd.events = POLLIN; + pfd.revents = 0; if (*lpFlags & WS_MSG_OOB) pfd.events |= POLLPRI; timeout = 15; if (!timeout || !poll( &pfd, 1, timeout )) @@ -5831,6 +5832,12 @@ static int WS2_recv_base( SOCKET s, LPWSABUF lpBuffers, DWORD dwBufferCount, _enable_event(SOCKET2HANDLE(s), FD_READ, 0, 0); goto error; } + if ((pfd.revents & POLLERR) || (pfd.revents & POLLHUP)) + { + err = WSAECONNRESET; + _enable_event(SOCKET2HANDLE(s), FD_READ, 0, 0); + goto error; + } } else {
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #58 from Paul The Tall paulthetall@gmail.com 2013-01-15 15:52:07 CST --- By the way, can this fix be built in the wine sourcecode?
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #59 from Bruno Jesus 00cpxxx@gmail.com 2013-03-22 12:21:57 CDT --- Please test this patch: http://source.winehq.org/patches/data/95025
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #60 from Alex Henrie alexhenrie24@gmail.com 2013-03-23 23:26:12 CDT --- That patch works perfectly, thanks!
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #61 from Tilman Blumenbach tilman@dataoverload.de 2013-03-24 10:51:21 CDT --- (In reply to comment #59)
Please test this patch: http://source.winehq.org/patches/data/95025
Works fine with wine-1.5.26.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #62 from Bruno Jesus 00cpxxx@gmail.com 2013-03-24 12:48:45 CDT --- We need someone to test in OSX to be sure it's fixed.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #63 from Paul The Tall paulthetall@gmail.com 2013-03-24 12:52:45 CDT --- (In reply to comment #62)
We need someone to test in OSX to be sure it's fixed.
I can confirm it works on OSX. And 100ds more people which uses my wrapper with the patch aboard.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #64 from Paul The Tall paulthetall@gmail.com 2013-03-24 12:53:53 CDT --- I would implant it in wine. Although I hear from Codewevaers they say its not a clean patch.
http://bugs.winehq.org/show_bug.cgi?id=29499
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1| |c09c82b25a3c95e79f23f22571f | |e9a63b38b824c Status|NEW |RESOLVED Resolution| |FIXED
--- Comment #65 from Bruno Jesus 00cpxxx@gmail.com 2013-03-25 14:46:39 CDT --- http://source.winehq.org/git/wine.git/?a=commit;h=c09c82b25a3c95e79f23f22571...
Thanks Dmitry.
http://bugs.winehq.org/show_bug.cgi?id=29499
--- Comment #66 from K1773R K1773R@darkgamex.ch 2013-03-25 15:06:17 CDT --- sweet, now there is no more need for releasing prepatched wines :)
http://bugs.winehq.org/show_bug.cgi?id=29499
Rohan Jain crodjer@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC|crodjer@gmail.com |
http://bugs.winehq.org/show_bug.cgi?id=29499
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #67 from Alexandre Julliard julliard@winehq.org 2013-03-29 13:32:56 CDT --- Closing bugs fixed in 1.5.27.
http://bugs.winehq.org/show_bug.cgi?id=29499
Adrian Kalla adrian.kalla@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |adrian.kalla@gmail.com
--- Comment #68 from Adrian Kalla adrian.kalla@gmail.com 2013-04-11 14:20:53 CDT --- Wow. This fixed the freeze in The Settlers 3 as well as Europa Universalis 2 (it seems this was a common problem to all multiplayer games using directplay). Thanks :)
http://bugs.winehq.org/show_bug.cgi?id=29499
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |alexsornes@gmail.com
--- Comment #69 from Bruno Jesus 00cpxxx@gmail.com 2013-05-25 08:26:55 CDT --- *** Bug 6922 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=29499
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |afffect@gmail.com
--- Comment #70 from Bruno Jesus 00cpxxx@gmail.com 2013-07-26 18:03:34 CDT --- *** Bug 29348 has been marked as a duplicate of this bug. ***
http://bugs.winehq.org/show_bug.cgi?id=29499
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |thunder_8888@mail.ru
--- Comment #71 from Bruno Jesus 00cpxxx@gmail.com --- *** Bug 24206 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=29499
geojay+wine@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |geojay+wine@gmail.com
--- Comment #72 from geojay+wine@gmail.com --- (In reply to Bruno Jesus from comment #65)
http://source.winehq.org/git/wine.git/?a=commit; h=c09c82b25a3c95e79f23f22571fe9a63b38b824c
Thanks Dmitry.
I can see this bug was supposed to be fixed with the above commit, but Wine 4.0 (Stable) and 4.9 (Devel) still seem to show this bug. Are users still expected to patch their Wine installations themselves or has there been a regression?
Thanks for the discussions so far!
- ephemer