https://bugs.winehq.org/show_bug.cgi?id=41292
--- Comment #18 from bugged2 bugged234@mail.com --- though i am not 100% sure , but looking at few logs for both cases i can see a common pattern. when the game hangs , it signals to an already closed handle (invalid handle) 0009:trace:dsound:IDirectSoundBufferImpl_Stop (009DAE98) 0009:trace:dsound:IDirectSoundBufferImpl_GetStatus (009DAE98,0032FDD0) 0009:trace:dsound:IDirectSoundBufferImpl_GetStatus status=0 0009: close_handle( handle=00d4 ) 0009: close_handle() = 0 0009: close_handle( handle=00d8 ) 0009: close_handle() = 0 0009: close_handle( handle=00dc ) ///*** the handle was closed here 0009: close_handle() = 0 0009: select( flags=2, cookie=0032f92c, timeout=infinite, prev_apc=0000, result={}, data={WAIT,handles={00e0}} ) 0009: select() = PENDING { call={APC_NONE}, apc_handle=0000 } 002d: event_op( handle=00a4, op=1 ) 002e: *wakeup* signaled=0 002d: event_op() = 0 { state=0 } 002e:trace:dsound:DSOUND_PerformMix (009C1E28) 002e:trace:dsound:DSOUND_MixToPrimary (frames 480) 002e:trace:dsound:DSOUND_MixToPrimary MixToPrimary for 009DAE98, state=3 002e:trace:dsound:DSOUND_MixToPrimary Checking 009DAE98, frames=480 002e:trace:dsound:DSOUND_CheckEvent Stopped... 002e:trace:dsound:DSOUND_CheckEvent Signalling 000000DC //*** signals here 002e: event_op( handle=00dc, op=1 ) 002e: event_op() = INVALID_HANDLE { state=0 }
while when the game doesn't hang
0009:trace:dsound:IDirectSoundBufferImpl_Stop (009DB378) 0031: event_op( handle=00a8, op=1 ) 0032: *wakeup* signaled=0 0009:trace:dsound:IDirectSoundBufferImpl_GetStatus (009DB378,0032FDD0) 0009:trace:dsound:IDirectSoundBufferImpl_GetStatus status=0 0031: event_op() = 0 { state=0 } 0009: close_handle( handle=00d8 ) 0009: close_handle() = 0 0032:trace:dsound:DSOUND_PerformMix (009C2338) 0032:trace:dsound:DSOUND_MixToPrimary (frames 480) 0032:trace:dsound:DSOUND_MixToPrimary MixToPrimary for 009DB378, state=3 0032:trace:dsound:DSOUND_MixToPrimary Checking 009DB378, frames=480 0032:trace:dsound:DSOUND_CheckEvent Stopped... 0032:trace:dsound:DSOUND_CheckEvent Signalling 000000E0 ///*** signals here 0009: close_handle( handle=00dc ) 0009: close_handle() = 0 0032: event_op( handle=00e0, op=1 ) 0034: *wakeup* signaled=2 0032: event_op() = 0 { state=0 } 0009: close_handle( handle=00e0 ) ///*** closes here 0009: close_handle() = 0