Still need help fixing deadlock (GDI/metafile)

Cihan Altinay cihan at uq.edu.au
Sun Jan 8 18:14:32 CST 2006


Hi,

I am still trying to finding the reason for PowerPoint 2000 causing a
deadlock if a file is opened that contains a preview which itself
contains a bitmap >90x90 pixels (ie. on the first slide).
After inserting some traces I feel I am pretty close but I'm
stuck since before the holidays. The problem is connected to GDI's
and/or metafile's StretchBlt (bitblt.c).
It calls MFDRV_StretchBlt and then the trouble begins as can be seen
from the output:

<snip>
trace:bitblt:StretchBlt --Start--
trace:gdi:GDI_GetObjPtr (0x3b0c): enter 1
trace:dc:DC_GetDCPtr
trace:gdi:GDI_ReleaseObj (0x3b0c): leave 1
trace:gdi:GDI_GetObjPtr (0x3aec): enter 1
trace:dc:DC_GetDCPtr
trace:gdi:GDI_GetObjPtr (0x3b0c): enter 2
trace:dc:DC_GetDCPtr
trace:bitblt:StretchBlt 0x3aec 0,0 160x120 -> 0x3b0c 0,0 960x720 rop=cc0020
trace:gdi:GDI_GetObjPtr (0x3aec): enter 3
trace:dc:DC_GetDCPtr
trace:gdi:GDI_ReleaseObj (0x3aec): leave 3
trace:gdi:GetObjectW 0x3af8 24 0x7fc2f760
trace:gdi:GDI_GetObjPtr (0x3af8): enter 3
trace:gdi:GDI_ReleaseObj (0x3af8): leave 3
trace:gdi:GDI_GetObjPtr (0x3aec): enter 3
trace:dc:DC_GetDCPtr
trace:gdi:GDI_ReleaseObj (0x3aec): leave 3
trace:gdi:GDI_GetObjPtr (0x3aec): enter 3
trace:dc:DC_GetDCPtr
trace:gdi:GDI_ReleaseObj (0x3aec): leave 3
trace:gdi:GDI_GetObjPtr (0x3aec): enter 3
trace:dc:DC_GetDCPtr
trace:gdi:GDI_ReleaseObj (0x3aec): leave 3
trace:metafile:MFDRV_StretchBlt MF_StretchBltViaDIB->len = 20292  rop=cc0020
PixYPM=3780 Caps=96
trace:bitmap:GetDIBits
trace:dc:CreateCompatibleDC --Checking lock-- hdc=0x3aec
err:syslevel:_CheckNotSysLevel Holding lock 0x7fad49e0 level 3
</snip>

Yes well... hdcDst and hdcSrc aren't freed yet from within StretchBlt.
There is a comment "FIXME: there is a race condition here". Could that
be the cause for the deadlock?
Btw. this might be the same problem as bug #3125 as both refer to the
preview and both cause a deadlock.

Can somebody give me a hint on how to tackle this? It is really important
for us... If you need more output please let me know.

Thanks a lot,
Cihan




More information about the wine-devel mailing list