http://bugs.winehq.org/show_bug.cgi?id=29035
Bug #: 29035 Summary: winmm deadlock at exit Product: Wine Version: 1.3.32 Platform: x86 OS/Version: Linux Status: NEW Keywords: regression Severity: normal Priority: P2 Component: winmm&mci AssignedTo: wine-bugs@winehq.org ReportedBy: hoehle@users.sourceforge.net CC: aeikum@codeweavers.com Classification: Unclassified
Winmm now deadlocks at exit when it failed to play a sound concurrently.
Use my MCI shell from bug #20232, comment #10: wine wintest.exe mcishell open z:\usr\share\sounds\ekiga\newmessage.wav alias nm open z:\usr\share\sounds\ekiga\ring.wav alias ri set nm output 1 set ri output 1 play ri from 0 notify This will use "plughw:0" instead of "default" on ALSA. Now copy&paste these 2 lines at once: play nm from 0 play ri from 0 wait
The first sound will play while the second one gets: err:winmm:WINMM_OpenDevice Activate failed: 80004005 mci.c:1326: Test failed: mci play ri from 0 wait error: 265(9 MCIERR_DEVICE_OPEN)
Everything seems normal until you try and exit the shell with ^Z or ^D. mci.c:1332: GetLastError: 1 mcishell: 12 tests executed (0 marked as todo, 1 failure), 0 skipped.
But the program does not exit. Hitting ^C leads to: fixme:console:CONSOLE_DefaultHandler Terminating process 8 on event 0 err:ntdll:RtlpWaitForCriticalSection section 0x7efec8e4 "loader.c: loader_section" wait timed out in thread 002a, blocked by 0009, retrying (60 sec) err:ntdll:RtlpWaitForCriticalSection section 0x7eecc1c0 "console.c: CONSOLE_CritSect" wait timed out in thread 002b, blocked by 002a, retrying (60 sec) ... Process of pid=0008 has terminated No process loaded, cannot execute 'echo Modules:' Cannot get info on module while no process is loaded No process loaded, cannot execute 'echo Threads:'
Bug #28042 too is about loader.c deadlocks. But here it's at exit, not DllMain start.
Note that for the bug to trigger it seems essential to "play ri from 0 notify" once successfully.