https://bugs.winehq.org/show_bug.cgi?id=45086
--- Comment #4 from Anton Romanov theli.ua@gmail.com --- It looks like BaseRenderer_InputPin_EndOfStream enters critical section filter.csFilter, then calls BaseInputPinImpl_EndOfStream to handle end of stream
that in turn goes down to DSoundRender_HandleEndOfStream which has a tight loop to leaveCS , wait for This->blocked for 10ms and lock it again until positions match :-/
It feels like that IS some kind of deadlock prevention, however it seems it doesn't quite work right.
Though it may explain why eventually it sometimes unlocks itself