Avoid a possible deadlock when stopping playback

Christian Costa titan.costa at wanadoo.fr
Wed Mar 17 12:55:40 CST 2004


Dmitry Timoshkov wrote:

>"Christian Costa" <titan.costa at wanadoo.fr> wrote:
>
>  
>
>>Are you sure this is usefull.
>>How can SetEvent cause a deadlock?
>>    
>>
>
>That's exactly the same case your recent patch has fixed.
>
My patch was intended to fix a deadlock with the thread of the wave 
driver not with the async one.
SetEvent causes a reschedule in Wine (since it does a call to the 
server) that may help avoiding a deadlock
but this only hides the problem.

>If the MCI command was sent asynchronously (without MCI_WAIT)
>an thread gets created and the command gets executed there.
>
>So, if an app does:
>mciSendCommand(MCI_PLAY); // an async thread gets created
>and right after that:
>mciSendCommand(MCI_STOP);
>
>last command hangs forever.
>
>  
>
Do you have a test app?

BTW, I've found more wave calls to "protect", will send a patch. :-)

Bye,
Christian





More information about the wine-devel mailing list