[Bug 35694] Serena hits deadlock on exit

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Jun 29 17:53:50 CDT 2014


http://bugs.winehq.org/show_bug.cgi?id=35694

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net
            Summary|serena hits deadlock on     |Serena hits deadlock on
                   |exit                        |exit

--- Comment #2 from Anastasius Focht <focht at 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

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list