Still need help fixing deadlock (GDI/metafile)

Cihan Altinay cihan at uq.edu.au
Thu Jan 12 18:10:16 CST 2006


Huw,

I put you on Cc for this thread in the hope to get some information on
this issue. Is there any side effect if undefining STRETCH_VIA_DIB?
Also, do you know where the problem might be?

Regards,
Cihan

Walt Ogburn wrote:
> Hi Cihan,
> 
> I'm glad it works.  It looks like Huw D M Davies changed STRETCH_VIA_DIB
> from being unset to set in 2002.  I think he's still around at
> huw at codeweavers.com.  Maybe you could ask him whether it could be changed
> back to the other method.
> 
> - Walter
> 
> On Thu, 12 Jan 2006, Cihan Altinay wrote:
> 
> 
>>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