http://bugs.winehq.org/show_bug.cgi?id=27901
Summary: Reproducible crash (and audio popping) in snd_pcm_area_copy [regression] [bisected] Product: Wine Version: 1.3.25 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: winmm&mci AssignedTo: wine-bugs@winehq.org ReportedBy: bz-wine@kdzbn.homelinux.net CC: aeikum@codeweavers.com
Created an attachment (id=35694) --> (http://bugs.winehq.org/attachment.cgi?id=35694) Failing test run, including stacktrace
(FWIW I also hear this audio popping, and see this crash, in Unreal Gold, although that's going to be hard to find to test with. The crash goes away if I use directsound (presumably the non-directsound config uses winmm, though I don't know for sure; it's only UseDirectSound=True or False) in the Unreal config. But with directsound, I get no audio at all; I'll go debug that one next. Luckily, the same issues show up in the winmm tests.)
The winmm regtest crashes ever since the mmdevapi rewrite change (either 901af51ea32f2d192a598808abab2d1b6a940773 or be158e48ad8ee556941bd3f1ff94ca7116680d00 was the change that caused the breakage to start; in between those two, the dlls/winmm/tests/wave.c test refuses to run). It also outputs a lot of audio popping before the crash in some modes, see below.
This test runs several iterations of the 440Hz tone. The first (reference) tone runs fine. The CALLBACK_FUNCTION and CALLBACK_THREAD runs also work fine. Then the "10 headers" / CALLBACK_EVENT run is full of pops (approximately ten of them; looks like one per header). The "5 headers" / "1 loop" / CALLBACK_EVENT run is also full of pops, though I didn't count how many. (It's in the neighborhood of 10, though.) Then the 1-second 1-header test runs, with all three callback flags, and each run works fine (no popping).
Then the 1-second 10-header CALLBACK_EVENT run starts; this one crashes almost immediately (though it does get a tiny bit of sound out the speaker first).
The tests were all run like this, starting with the .wine-test2 directory not present:
WINEPREFIX=$HOME/.wine-test2 WINETEST_INTERACTIVE=1 ../../../tools/runtest -P wine -M winmm.dll -T ../../.. -p winmm_test.exe.so wave.c
The full test log (from a git tree as of the 1.3.25 release) is attached, though note that I had to ctrl-c the test program at the end. I did let it run for a few minutes after the crash and before sending the ctrl-c, though.
This system is LFS from a few years ago (and a couple local changes as well to get multilib). Versions of any package are available upon request, though everything is from source. Packages that I think are important:
gcc-4.4.1 glibc-2.10.1 linux-2.6.39.3 (I have kept the kernel up to date) alsa-{lib,utils}-1.0.21
Sound device info (from "lspci -v", as root):
00:08.0 Multimedia audio controller: ALi Corporation M5455 PCI AC-Link Controller Audio Device (rev 20) Subsystem: ASRock Incorporation ASRock 939Dual-SATA2 Motherboard Flags: bus master, medium devsel, latency 96, IRQ 18 I/O ports at e800 [size=256] Memory at febff000 (32-bit, non-prefetchable) [size=4K] Capabilities: [40] Power Management version 2 Kernel driver in use: Intel ICH Kernel modules: snd-intel8x0
(This is using ALSA, not OSSv4. "WINEPREFIX=$HOME/.wine-test2 ./wine winecfg" from the top-level directory shows that ALSA is the only system available; it's also selected.)
The CPU is a dual-core Athlon64, and although the kernel was built in 64-bit mode and most of userspace is 64-bit, wine is built in 32-bit mode (USE_ARCH=32 CC="gcc -m32" CXX="g++ -m32" ./configure --prefix=/usr/local --disable-win64), and I have 32-bit versions of most libraries built and installed (which get activated based on a wrapper script around their xxxxxx-config scripts when present, and the USE_ARCH environment variable above).
For any other system info that may be needed, just ask.