Hi Joerg, I had a new hang on yesterday's git under valgrind:
../../../tools/runtest -q -P wine -M winmm.dll -T ../../.. -p winmm_test.exe.so mci.c && touch mci.ok preloader: Warning: failed to reserve range 00110000-68000000 mci.c:186: Test failed: mci close all notify (without buffer) returned error: 281 mci.c:190: Test failed: mci close all notify (with output buffer) returned error: 281 mci.c:199: Test failed: mci sysinfo waveaudio quantity open, expected output buffer '0', got: '1' mci.c:279: Test failed: mci status position gave 2333, expected 2000, some tests will fail mci.c:288: Test failed: recorded 74662 bytes, expected 64000 mci.c:298: Test failed: recorded 37331 samples, expected 32000 mci.c:330: Test failed: mci status length gave 2333, expected 2000, some tests will fail. mci.c:333: Test failed: mci incorrect cue output returned: MCIERR_EXTENSION_NOT_FOUND mci.c:148: Test failed: got 0001 instead of MCI_NOTIFY_xyz 0002 from command play mci.c:149: Test failed: PeekMessage should succeed for command status mci.c:437: Test failed: Expected full pathname from info file: tempfile.wav err:wave:wodPlayer_WriteMaxFrags Error in writing wavehdr. Reason: Resource temporarily unavailable err:wave:wodPlayer_WriteMaxFrags Error in writing wavehdr. Reason: Resource temporarily unavailable err:wave:wodPlayer_WriteMaxFrags Error in writing wavehdr. Reason: Resource temporarily unavailable err:wave:wodPlayer_WriteMaxFrags Error in writing wavehdr. Reason: Resource temporarily unavailable ... 1600 dup lines removed ... ALSA lib ../../../src/pcm/pcm.c:7228:(snd_pcm_recover) underrun occured
16 bytes in 1 blocks are definitely lost in loss record 148 of 913 by: RtlAllocateHeap (heap.c:1421) by: mciSendStringW (mci.c:1319) by: mciSendStringA (mci.c:1448) by: test_openCloseWAVE (mci.c:164) by: func_mci (mci.c:652)
I had to kill it; dunno if the leak was because I interrupted it or not. - Dan
Dan Kegel wrote:
I had a new hang on yesterday's git under valgrind: err:wave:wodPlayer_WriteMaxFrags Error in writing wavehdr. Reason: Resource temporarily unavailable ... 1600 dup lines removed ... ALSA lib ../../../src/pcm/pcm.c:7228:(snd_pcm_recover) underrun occured
Good that I'm not alone. I had these specific two yesterday for the first time ever as well, without valgrind. I attributed it to "yet another flaky error in the audio drivers" -- I mean I don't entirely trust the audio drivers because winmm/tests/wave.c has shown flaky failures (WOD_PREPARED msg) for ages, without being driven by the MCI. IIRC, Wine did not hang as I waited long enough, but maybe I did ^C.
Facts: - The MCI play loop is still buggy w.r.t. sample size (witness the 333ms multiples) That could explain the underrun log that I've also seen (which I believe is a very recent log addition from Maarten). - winmm/wave.ok produces errors from time to time in test.winehq as well as on my machines.
Suppositions: - the broken MCI play loop causes the above errors, randomly. But we have nothing to prove that.
Well, I don't know where to look for the wave.ok intermittent failures (not in MCI), but my goal is to write a correct MCI play/record loop that will also be usable in mciavi32.
Oh well, another piece to the puzzle: using my interactive MCI shell, play 2 sounds in parallel [*]. *Sometimes* the second one manages to halt the first sound. I see no reason/code in MCI's waveaudio that can do that! The error must be elsewhere (-> wave or audio drivers).
[*] open long-sound.wav alias a open other.wav alias b play a from 0 play b from 0 Repeat play until a is interrupted (i.e. nothing is heard any more). The playloop appears to hang.
Regards, Jörg Höhle