err:ntdll:RtlpWaitForCriticalSection section 0x40969e80 "../../objects/gdiobj.c: GDI_level" wait timed out in thread 0009, blocked by 0015, retrying (60 sec) err:ntdll:RtlpWaitForCriticalSection section 0x40f227a0 "x11drv_main.c: X11DRV_CritSection" wait timed out in thread 0015, blocked by 0009, retrying (60 sec)
It's a wine bug, someone is calling GDI functions while holding the X11 lock.
And it's a race condition, it doesn't happen everytime i run PQ3.exe (although it happens almost 99%, got 1 run so far with PQ3.exe running normally).
I looked around in source (took me some time to understand it)
A backtrace or a +relay trace should tell you which function is the culprit.
The +relay traces are different most runs (depends on my load or how many printf's i put into wine source to find interesting places). Anyhow, there's one analogy between all the traces: the last function thread No'9 calls and does not return is always GDI_GetObjPtr (which i assume is the one defined in objects/gdiobj.c)
Anyhow, the last function thread No'15 calls varies
So, i cannot find the specific position, what to do now?
0015:Call gdi32.DIB_CreateDIBSection(00002e1c,4bd4c650,00000000,4043ef60,00000000,4f430000,00000080) ret=40afd02c 0015:Call x11drv.CreateDIBSection(4bd4c690,4bd4c650,00000000,4043ef60,00000000,4f430000,00000080) ret=4093160e 0015:Call gdi32.CreateDIBitmap(00002e1c,4bd4c650,00000000,00000000,4bd4c650,00000000) ret=40eddcd6 0015:Call x11drv.GetDeviceCaps(4bd4c690,0000000c) ret=4092e466 0015:Ret x11drv.GetDeviceCaps() retval=00000010 ret=4092e466 0015:Call x11drv.GetDeviceCaps(4bd4c690,0000000e) ret=4092e466 0015:Ret x11drv.GetDeviceCaps() retval=00000001 ret=4092e466 0009:Call user32.SetRect(407928e4,00000000,00000000,000001a6,00000011) ret=40cd4ee7 0009:Ret user32.SetRect() retval=00000001 ret=40cd4ee7 0009:Call gdi32.GDI_GetObjPtr(00002ce8,00004f4b) ret=40edcb3e 0015:Call x11drv.CreateBitmap(4bd4c690,00002e20) ret=4092a50d 0015:Call gdi32.GDI_GetObjPtr(00002e20,00004f4b) ret=40ed08fe 0015:Ret gdi32.GDI_GetObjPtr() retval=4c1ee610 ret=40ed08fe 0015:Call gdi32.GetStockObject(00000012) ret=40ed098c 0015:Ret gdi32.GetStockObject() retval=00000048 ret=40ed098c
mIc
...und dann war da noch der Statistiker, der in einem Fluß ertrank, der im Durchschnitt nur 10 cm tief war.