Deadlock?

Michael Sauer sauer at okolni.de
Tue Oct 14 17:26:18 CDT 2003


> > 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.




More information about the wine-devel mailing list