[Bug 35524] Adobe Audition 3.0 crashes on startup (GdipFillRectangles must validate graphics object parameter)

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Feb 16 05:44:13 CST 2014


http://bugs.winehq.org/show_bug.cgi?id=35524

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
                 CC|                            |focht at gmx.net
          Component|-unknown                    |gdiplus
            Version|1.7.11                      |1.5.31
            Summary|Adobe Audition 3.0 crashes  |Adobe Audition 3.0 crashes
                   |                            |on startup
                   |                            |(GdipFillRectangles must
                   |                            |validate graphics object
                   |                            |parameter)
     Ever confirmed|0                           |1

--- Comment #12 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

there is no need to do regression tests.

Since you started the old Wine 1.5.x prefix always with multiple components
having a native override and now a fresh Wine 1.7.x prefix without overrides
it's obvious that an old bug that was always present reappeared.

The libpng issue is separate, report that to the distro package maintainers.

Making this bug about gdiplus issue.

Relevant part of trace log:

--- snip ---
$ pwd
/home/focht/.wine/drive_c/Program Files/Adobe/Adobe Audition 3.0

$ WINEDEBUG=+tid,+seh,+relay,+gdiplus wine ./Audition.exe >>log.txt 2>&1
...
0025:Call gdiplus.GdipCreateFromHDC(000f003f,0033dce8) ret=480917e0
0025:trace:gdiplus:GdipCreateFromHDC (0xf003f, 0x33dce8)
0025:trace:gdiplus:GdipCreateFromHDC2 (0xf003f, (nil), 0x33dce8)
0025:Call ntdll.RtlAllocateHeap(00110000,00000008,0000008c) ret=7ec2b542
0025:Ret  ntdll.RtlAllocateHeap() retval=08278fe8 ret=7ec2b542
0025:trace:gdiplus:GdipSetMatrixElements (0x8279028, 1.00, 0.00, 0.00, 1.00,
0.00, 0.00)
0025:trace:gdiplus:GdipCreateRegion 0x8279044
0025:Call ntdll.RtlAllocateHeap(00110000,00000008,00000018) ret=7ec2b542
0025:Ret  ntdll.RtlAllocateHeap() retval=08291ae0 ret=7ec2b542
0025:trace:gdiplus:GdipCreateRegion => 0x8291ae0
0025:Call gdi32.GetCurrentObject(000f003f,00000007) ret=7ec32915
0025:Ret  gdi32.GetCurrentObject() retval=0001001a ret=7ec32915
0025:Call gdi32.GetObjectW(0001001a,00000054,0033db5c) ret=7ec3293e
0025:Ret  gdi32.GetObjectW() retval=00000018 ret=7ec3293e
0025:Call user32.WindowFromDC(000f003f) ret=7ec3297b
0025:Ret  user32.WindowFromDC() retval=00010150 ret=7ec3297b
0025:Call gdi32.GetDeviceCaps(000f003f,00000058) ret=7ec329fa
0025:Ret  gdi32.GetDeviceCaps() retval=00000060 ret=7ec329fa
0025:Call gdi32.GetDeviceCaps(000f003f,0000005a) ret=7ec32a23
0025:Ret  gdi32.GetDeviceCaps() retval=00000060 ret=7ec32a23
0025:trace:gdiplus:GdipCreateFromHDC2 <-- 0x8278fe8
0025:Ret  gdiplus.GdipCreateFromHDC() retval=00000000 ret=480917e0
0025:Call
gdiplus.GdipCreateBitmapFromScan0(00000000,00000000,00000000,0026200a,00000000,0033dce0)
ret=48091859
0025:trace:gdiplus:GdipCreateBitmapFromScan0 0 0 0 0x26200a (nil) 0x33dce0
0025:Ret  gdiplus.GdipCreateBitmapFromScan0() retval=00000002 ret=48091859
0025:Call gdiplus.GdipGetImageGraphicsContext(00000000,0033dcc0) ret=4809187a
0025:trace:gdiplus:GdipGetImageGraphicsContext (nil) 0x33dcc0
0025:Ret  gdiplus.GdipGetImageGraphicsContext() retval=00000002 ret=4809187a
0025:Call gdiplus.GdipCreateSolidFill(ff848484,0033dcc0) ret=480918c6
0025:trace:gdiplus:GdipCreateSolidFill (ff848484, 0x33dcc0)
0025:Call ntdll.RtlAllocateHeap(00110000,00000008,00000008) ret=7ec2b542
0025:Ret  ntdll.RtlAllocateHeap() retval=08291b00 ret=7ec2b542
0025:trace:gdiplus:GdipCreateSolidFill <-- 0x8291b00
0025:Ret  gdiplus.GdipCreateSolidFill() retval=00000000 ret=480918c6
0025:Call
gdiplus.GdipFillRectangleI(00000000,08291b00,00000000,00000000,00000000,00000000)
ret=480918e7
0025:trace:gdiplus:GdipFillRectangleI ((nil), 0x8291b00, 0, 0, 0, 0)
0025:trace:gdiplus:GdipFillRectangles ((nil), 0x8291b00, 0x33dbf8, 1)
0025:trace:seh:raise_exception code=c0000005 flags=0 addr=0x7ec3887d
ip=7ec3887d tid=0025
0025:trace:seh:raise_exception  info[0]=00000000
0025:trace:seh:raise_exception  info[1]=00000010
0025:trace:seh:raise_exception  eax=00000000 ebx=7ec8c000 ecx=00000000
edx=7bcecb88 esi=0033dbc0 edi=0033dc58
0025:trace:seh:raise_exception  ebp=0033dba8 esp=0033db60 cs=0023 ds=002b
es=002b fs=0063 gs=006b flags=00010202 
...
0025:Call user32.MessageBoxW(00000000,02cb4858 L"To continue working where you
left off, please restart Audition.",02c49ba0 L"Shutting Down...",00040000)
ret=480c0f71 
--- snip ---

Wine needs to validate the graphics object before accessing it, returning an
error.

Source:
http://source.winehq.org/git/wine.git/blob/2d487e22d6faa3f851804d5e4064206311303d1a:/dlls/gdiplus/graphics.c#l3742

--- snip ---
3742 GpStatus WINGDIPAPI GdipFillRectangles(GpGraphics *graphics, GpBrush
*brush, GDIPCONST GpRectF *rects,
3743     INT count)
3744 {
3745     GpStatus status;
3746     GpPath *path;
3747
3748     TRACE("(%p, %p, %p, %d)\n", graphics, brush, rects, count);
3749
3750     if(!rects)
3751         return InvalidParameter;
3752
3753     if (graphics->image && graphics->image->type == ImageTypeMetafile)
3754     {
3755         status = METAFILE_FillRectangles((GpMetafile*)graphics->image,
brush, rects, count);
3756         /* FIXME: Add gdi32 drawing. */
3757         return status;
3758     }
...
--- snip ---

'winetricks gdiplus' works around.

There are no further native overrides needed.

$ wine --version
wine-1.7.12-146-gc4415b2

Regards

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list