http://bugs.winehq.org/show_bug.cgi?id=24557
Summary: winmm/msacm: Improper shutdown sequence Product: Wine Version: 1.3.1 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: msacm32 AssignedTo: wine-bugs@winehq.org ReportedBy: hoehle@users.sourceforge.net
Created an attachment (id=30999) --> (http://bugs.winehq.org/attachment.cgi?id=30999) winmm,msacm,tid trace of shutdown, including backtrace
How to reproduce with source code: Use my MCI shell (bug #20232, comment #10), play a .wav involving the MSACM (i.e. not a linear PCM file, but e.g. an ADPCM encoded one) then end the shell application while it's playing.
play 11kadpcm.wav # auto-open ctrl-Z/ctrl-D # end the program while music plays
Native does not crash and stops the music. The attached log shows how upon exit, Wine first detaches msacm -- while winmm is still playing -- then the MCI from within winmm. Closing the MCI device causes Wine to crash in acmStreamUnprepareHeader when indirectly invoking the MSACM codec that handles the file.
trace:msacm:DllMain 0x7e210000 0x0 0x1 trace:msacm:acmDriverClose (0x740598, 00000000) trace:winmm:DllMain 0x7e820000 0x0 0x1 trace:mci:MCI_Close (ffffffff, 00000002, (nil))
The console EOF bug #24306 currently shadows this bug when using the MCI shell, so use wine-1.3.1 or older (or write a one-liner mciSendStringA("play 11kadpcm.wav",...);). BTW, in even older versions of Wine (1.0 IIRC), this scenario would trigger a critical section lock timeout instead of a crash.
Perhaps ACM_GetStream should test the handle like MSACM_GetObj does?
Crashes with (and does not depend on) either OSS or ALSA.