Still need help fixing deadlock (GDI/metafile)

Cihan Altinay cihan at uq.edu.au
Wed Jan 11 21:29:22 CST 2006


Hi Walter,

Walt Ogburn wrote:
> Hi Cihan,
> 
> What happens if you comment out #define STRETCH_VIA_DIB in
> dlls/gdi/mfdrv/bitblt.c?  This will make it use GetBitmapBits instead of
> GetDIBits.

Indeed, this does the trick!
No locking problems... Will try to look into that.

> 
> - Walter

Thanks a lot,
Cihan

> 
> On Wed, 11 Jan 2006, Cihan Altinay wrote:
> 
> 
>>Since nobody seems to be able to help me with this problem at the moment
>>I opened a bug report[1] for it. I would appreciate if somebody with
>>more knowledge could take a quick look at it. Thanks!
>>
>>Cihan
>>
>>[1] http://bugs.winehq.org/show_bug.cgi?id=4284
>>
>>
>>Cihan Altinay wrote:
>>
>>>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