http://bugs.winehq.org/show_bug.cgi?id=31246
Bug #: 31246 Summary: QQMusic deadlock on exit with buitin msvcr80 Product: Wine Version: 1.5.9 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: fracting@gmail.com Classification: Unclassified
1. Download QQMusic installer http://dl_dir.qq.com/music/clntupate/QQMusic2011.exe
2. Install with Wine wine-1.5.9-33-gb20a1f5
3. Workaround Bug 27109 by `winetricks vcrun6`
4. Workaround Bug 30512 by `winetricks vcrun2008` + native alt80.dll
5. Workaround Bug 27304 by `winetricks gdiplus`.
6. Set msvcr80 to builtin
7. $ cd "~/.wine/drive_c/Program Files/Tencent/QQMusic" $ wine QQMusic.exe
8. Wait for some seconds
9. Right click the system tray icon of QQMusic, then "Exit"/"退出" in the menu. If you can't read Chinese, just click the last item ;-) (With a red power key icon)
Expect Result: QQ Music should exit
Actual Result: Deadlock: --- snip --- 0009:err:ntdll:RtlpWaitForCriticalSection section 0x7bcd0944 "loader.c: loader_section" wait timed out in thread 0009, blocked by 0040, retrying (60 sec) 002b:err:ntdll:RtlpWaitForCriticalSection section 0x7bcd0944 "loader.c: loader_section" wait timed out in thread 002b, blocked by 0040, retrying (60 sec) 002e:err:ntdll:RtlpWaitForCriticalSection section 0x7bcd0944 "loader.c: loader_section" wait timed out in thread 002e, blocked by 0040, retrying (60 sec) 0028:err:ntdll:RtlpWaitForCriticalSection section 0x7bcd0944 "loader.c: loader_section" wait timed out in thread 0028, blocked by 0040, retrying (60 sec) 003c:err:ntdll:RtlpWaitForCriticalSection section 0x7bcd0944 "loader.c: loader_section" wait timed out in thread 003c, blocked by 0040, retrying (60 sec)
--- snip ---
How reproducible:
50%, depends on how long you wait after QQMusic starts. If you click the "Exit/退出" item very early then there maybe no deadlock, for me it seems waiting for 5 seconds before clicking "exit/退出" is enough to get the deadlock.
Never get a deadlock with native msvcr80.
Additional info: 1. I can reproduce the deadlock when +relay trace is enable. 2. With +msvcrt trace, I found the only log regarding thread 0040 is: --- snip --- 0040:trace:msvcrt:DllMain (0x7e030000, DLL_THREAD_ATTACH, (nil)) pid(8), tid(40), tls(0) 0040:trace:msvcrt:_endthread (void) --- snip ---
will attach a +msvcrt,+tid log