Fedora users, please test mci patch about time-out/hanging machine

Michael Stefaniuc mstefani at redhat.com
Thu Nov 19 04:33:31 CST 2009


Joerg-Cyril.Hoehle at t-systems.com wrote:
> Testhq.org results from 17th of November about winmm:mci were striking:
> All machines producing a timeout had "f11" in their name.
> (Another day, some f11 machines passed the tests).
> http://test.winehq.org/data/4990ca0ea342bd115a9a46047b3b2de599cb916e/index_Wine.html
> Please test whether the following patch correlates with hanging machines.
> Not checking waveoutwrite's return code for sure has the potential to hang the
> play loop, waiting for a buffer to come back that was never sent out in case of error.
> But then, why did waveOutWrite fail? That's what I'd like you to investigate. Why Fedora 11?
> Below patch only adds error reporting to the mciplay loop. Feel free to add the same to the mcirecord loop.
> diff --git a/dlls/mciwave/mciwave.c b/dlls/mciwave/mciwave.c
> index cdf9146..fdb6b18 100644
> --- a/dlls/mciwave/mciwave.c
> +++ b/dlls/mciwave/mciwave.c
> @@ -882,6 +882,7 @@ static DWORD WAVE_mciPlay(MCIDEVICEID wDevID, DWORD_PTR dwFlags, DWORD_PTR pmt,
>  	      &waveHdr[whidx], waveHdr[whidx].dwBufferLength,
>  	      waveHdr[whidx].dwBytesRecorded);
>  	dwRet = waveOutWrite(wmw->hWave, &waveHdr[whidx], sizeof(WAVEHDR));
> +	if (dwRet) ERR("Write %d\n", dwRet);
>  	left -= count;
>  	wmw->dwPosition += count;
>  	TRACE("after WODM_WRITE dwPosition=%u\n", wmw->dwPosition);
> @@ -893,7 +894,8 @@ static DWORD WAVE_mciPlay(MCIDEVICEID wDevID, DWORD_PTR dwFlags, DWORD_PTR pmt,
>      WAVE_mciPlayWaitDone(wmw); /* to balance first buffer */
>      /* just to get rid of some race conditions between play, stop and pause */
> -    waveOutReset(wmw->hWave);
> +    dwRet = waveOutReset(wmw->hWave);
> +    if (dwRet) ERR("Reset %d\n", dwRet);
>      waveOutUnprepareHeader(wmw->hWave, &waveHdr[0], sizeof(WAVEHDR));
>      waveOutUnprepareHeader(wmw->hWave, &waveHdr[1], sizeof(WAVEHDR));
> A future patch will abort the loop in case of error.  However so far, when creating
> situations that hung on my (non-Fedora) machine (cf. bug #20664), the above ERR message
> was never triggered.
> So the cause of random mci time-out on test.winehq may as well lay elsewhere.
Like in PulseAudio? That may well be. PA in F11 made sound be more
broken in Wine.


More information about the wine-devel mailing list