http://bugs.winehq.org/show_bug.cgi?id=27087
--- Comment #10 from Jörg Höhle hoehle@users.sourceforge.net 2011-05-25 12:30:20 CDT ---
what happens if you set win.ini[Sounds] to one of those very short files and issue the MCI sound command a few times?
wintest.exe mcishell hangs in the same way as the game with those short wavs. No sound was playing and I had to interrupt the shell by <Ctrl+C>.
Great, this is a super simplification of the bug!
The bug is now as simple as it can get. DSound (mmap) is not involved. You need no more than my MCI shell (full source, please add keyword)
Playsound writes a single buffer (1088 bytes) to ALSA. This is smaller than ALSA's period_size (940 frames).
Nevertheless, Wine expects ALSA to signal that playing ends, by way of snd_pcm_avail_update(). This does not happen. As a result, WOM_DONE is never called, and the player hangs.
Surprisingly, I can now reproduce the bug! in Ubuntu Intrepid -- after killing PulseAudio (is that all that changed?)
Reproduce with: Add to drive_c/windows/win.ini: [intl]... [Sounds] SystemExclamation=/home/.../UIButtonPress.wav
wintest.exe mcishell (see bug #20232, comment #10) sound SystemExclamation wait notify -> hangs
BTW, SystemExclamation is the sound alias used by the winmm:mci testsuite. Configure your win.ini as above, run Wine's testsuite and it will now hang.