http://bugs.winehq.org/show_bug.cgi?id=35694
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Summary|serena hits deadlock on |Serena hits deadlock on |exit |exit
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
The game is SDL based using OpenGL.
--- snip --- Wine-dbg>info process pid threads executable (all id:s are in hex) 00000028 4 'Dagon.exe' 00000025 2 'explorer.exe' 0000000e 5 'services.exe' 00000019 3 _ 'plugplay.exe' 00000012 4 _ 'winedevice.exe'
Wine-dbg>info thread process tid prio (all id:s are in hex) ... 00000028 Dagon.exe 0000002d 0 0000002b 0 0000002a 0 00000029 0 --- snip ---
The relevant part of trace log:
--- snip --- ... 0029:Call opengl32.glTexCoordPointer(00000002,00001406,00000000,0033fbac) ret=004198a1 0029:Ret opengl32.glTexCoordPointer() retval=00000000 ret=004198a1 0029:Call opengl32.glVertexPointer(00000002,00001406,00000000,0033fbe8) ret=004198b1 0029:Ret opengl32.glVertexPointer() retval=00000000 ret=004198b1 0029:Call opengl32.glDrawArrays(00000006,00000000,00000004) ret=004198bd 0029:Ret opengl32.glDrawArrays() retval=7dacd008 ret=004198bd 0029:Call opengl32.glPopMatrix() ret=004198c3 0029:Ret opengl32.glPopMatrix() retval=7d91b27c ret=004198c3 0029:Call opengl32.glMatrixMode(00001701) ret=0040e58a 0029:Ret opengl32.glMatrixMode() retval=ffffffa8 ret=0040e58a 0029:Call opengl32.glPopMatrix() ret=0040e590 0029:Ret opengl32.glPopMatrix() retval=7d91b27c ret=0040e590 0029:Call opengl32.glMatrixMode(00001700) ret=0040e597 0029:Ret opengl32.glMatrixMode() retval=00000000 ret=0040e597 0029:Call openal32.alListenerfv(0000100f,0064f40c) ret=0040e5be 0029:Ret openal32.alListenerfv() retval=00000000 ret=0040e5be 0029:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 0029:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=004c971e 0029:Call KERNEL32.QueryPerformanceCounter(0033fbe4) ret=004c9dc9 0029:Call ntdll.NtQueryPerformanceCounter(0033fbe4,00000000) ret=7b836439 0029:Ret ntdll.NtQueryPerformanceCounter() retval=00000000 ret=7b836439 0029:Ret KERNEL32.QueryPerformanceCounter() retval=00000001 ret=004c9dc9 0029:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e 0029:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=004c978e 0029:Call ntdll.RtlEnterCriticalSection(00188420) ret=004c971e 0029:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=004c971e 0029:Call ntdll.RtlLeaveCriticalSection(00188420) ret=004c978e 0029:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=004c978e 0029:Call ntdll.RtlEnterCriticalSection(00188420) ret=004c971e 0029:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=004c971e 0029:Call openal32.alSourcePlay(00000005) ret=00402854 0029:Ret openal32.alSourcePlay() retval=00000000 ret=00402854 0029:Call openal32.alGetError() ret=0040321c 0029:Ret openal32.alGetError() retval=00000000 ret=0040321c 0029:Call ntdll.RtlLeaveCriticalSection(00188420) ret=004c978e 0029:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=004c978e 0029:Call ntdll.RtlEnterCriticalSection(00188420) ret=004c971e 0029:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=004c971e 0029:Call ntdll.RtlLeaveCriticalSection(00188420) ret=004c978e 0029:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=004c978e 0029:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e 0029:Ret ntdll.RtlLeaveCriticalSection() retval=00000000 ret=004c978e 0029:Call KERNEL32.QueryPerformanceCounter(0033fb94) ret=004c9dc9 0029:Call ntdll.NtQueryPerformanceCounter(0033fb94,00000000) ret=7b836439 0029:Ret ntdll.NtQueryPerformanceCounter() retval=00000000 ret=7b836439 0029:Ret KERNEL32.QueryPerformanceCounter() retval=00000001 ret=004c9dc9 0029:Call KERNEL32.QueryPerformanceCounter(0033fb94) ret=004c9dc9 0029:Call ntdll.NtQueryPerformanceCounter(0033fb94,00000000) ret=7b836439 0029:Ret ntdll.NtQueryPerformanceCounter() retval=00000000 ret=7b836439 0029:Ret KERNEL32.QueryPerformanceCounter() retval=00000001 ret=004c9dc9 0029:Call KERNEL32.TlsGetValue(00000004) ret=004d23f4 0029:Ret KERNEL32.TlsGetValue() retval=0014c5a0 ret=004d23f4 0029:Call gdi32.SwapBuffers(001a0029) ret=004ec9c2 ... 002a:err:ntdll:RtlpWaitForCriticalSection section 0x137988 "?" wait timed out in thread 002a, blocked by 0000, retrying (60 sec) --- snip ---
Looks more like a bug in the game itself lurking here.
Only filtering the log for the critical section 0x137988 in question shows it clearer:
--- snip --- ... 0029:Call KERNEL32.InitializeCriticalSectionAndSpinCount(00137988,000007d0) ret=004c96cd 0029:Call ntdll.RtlInitializeCriticalSectionEx(00137988,000007d0,00000000) ret=7b876d5e 002a:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 002a:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e 002a:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 002a:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e ... 002a:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 0029:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 002a:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e 0029:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e 002a:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 002a:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e ... 002a:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 002a:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e 0029:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e ; enter #1 0029:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e ; leave #1 0029:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e ; leave #2 (!) 002a:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 0029:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 0029:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e ... 0029:Call ntdll.RtlEnterCriticalSection(00137988) ret=004c971e 0029:Call ntdll.RtlLeaveCriticalSection(00137988) ret=004c978e ... 002a:err:ntdll:RtlpWaitForCriticalSection section 0x137988 "?" wait timed out in thread 002a, blocked by 0000, retrying (60 sec) --- snip ---
$ sha1sum Serena.1.zip ade29b22f6e35095e5ebf8b60efae4b0db84aaa0 Serena.1.zip
$ du -sh Serena.1.zip 316M Serena.1.zip
$ wine --version wine-1.7.21
Regards