WineHQ
Bug Tracking Database – Bug 35524

 Bugzilla

 

Last modified: 2021-02-21 03:56:29 UTC  

Adobe Audition 3.0 crashes on startup (GdipFillRectangles must validate graphics object parameter)

Bug 35524 - Adobe Audition 3.0 crashes on startup (GdipFillRectangles must validate graphics object parameter)
Adobe Audition 3.0 crashes on startup (GdipFillRectangles must validate graph...
Status: CLOSED FIXED
AppDB: Show Apps affected by this bug
Product: Wine
Classification: Unclassified
Component: gdiplus
1.5.31
x86-64 Linux
: P2 normal
: ---
Assigned To: Mr. Bugs
https://web.archive.org/web/201512010...
: download
Depends on:
Blocks:
  Show dependency tree
 
Reported: 2014-02-06 13:03 UTC by m27315
Modified: 2021-02-21 03:56 UTC (History)
1 user (show)

See Also:
Regression SHA1:
Fixed by SHA1: 78459aea0dcce1e5b7dd9d30b1e516646f33722d
Distribution: ---
Staged patchset:


Attachments
first-run log (1.66 KB, text/plain)
2014-02-06 13:03 UTC, m27315
Details
Screenshot of error dialog box. (9.08 KB, image/png)
2014-02-06 13:04 UTC, m27315
Details
Wine run log using 1.5.31 with clean prefix - crashes too. (1.10 KB, text/plain)
2014-02-06 13:48 UTC, m27315
Details
Wine run log using 1.5.31 and older tricked out prefix. (2.04 KB, text/plain)
2014-02-06 13:49 UTC, m27315
Details
Wine run log using 1.7.11 with clean prefix and gdiplus override - still crashes. (876 bytes, text/plain)
2014-02-06 14:25 UTC, m27315
Details
regression test script (894 bytes, application/x-shellscript)
2014-02-14 11:30 UTC, m27315
Details

Note You need to log in before you can comment on or make changes to this bug.
Description m27315 2014-02-06 13:03:39 UTC
Created attachment 47428 [details]
first-run log

Adobe Audition 3.0 works fairly well with wine-1.5.31 and downward.  However, it crashes immediately for versions between 1.6.0 (even betas and RC's) and 1.7.11 with the following pop-up error:

Runtime Error!

Program: ...\Audition.exe

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

Please see attached first-run log for more details.

If you need anything from me, please let me know.

Thanks!
Comment 1 m27315 2014-02-06 13:04:28 UTC
Created attachment 47429 [details]
Screenshot of error dialog box.
Comment 2 Bruno Jesus 2014-02-06 13:08:57 UTC
> libpng warning: Application built with libpng-1.6.8 but running with 1.5.15

Is this log line in the 1.5.31 log as well?
Comment 3 m27315 2014-02-06 13:48:23 UTC
Created attachment 47430 [details]
Wine run log using 1.5.31 with clean prefix - crashes too.

Well, I'm confused.  If I create a fresh .wine container, I get the same error even with 1.5.31.  However, if I use my original tricked out .wine prefix created a long time ago with:

winetricks corefonts vcrun6 mfc40 gdiplus msxml3

Then it works just fine.  (Well, there are some text-drawing bugs, but that's another issue.  :)
Comment 4 m27315 2014-02-06 13:49:09 UTC
Created attachment 47431 [details]
Wine run log using 1.5.31 and older tricked out prefix.
Comment 5 m27315 2014-02-06 14:25:59 UTC
Created attachment 47434 [details]
Wine run log using 1.7.11 with clean prefix and gdiplus override - still crashes.

Ok, I rediscovered my old recipe.  By using winecfg to override the gdiplus library (native,builtin).  I'm able to open and use Audition 3.0 in a fresh wine prefix using wine-1.5.31.

Using the same override, I'm able to progress farther in a clean prefix using wine-1.7.11.  The libpng error goes away, but the program quickly crashes with the same pop-up error box.  Please see attached log.
Comment 6 Austin English 2014-02-06 14:37:20 UTC
> libpng warning: Application built with libpng-1.6.8 but running with 1.5.15

You need to fix that.

If this problem still persists, please run a regression test:
http://wiki.winehq.org/RegressionTesting
Comment 7 m27315 2014-02-06 14:45:30 UTC
I'm sorry, but was that last comment intended for me (the reporter) or Bruno? ... Thanks!  :)
Comment 8 Ken Sharp 2014-02-06 15:41:04 UTC
It's your log so obviously you.
Comment 9 m27315 2014-02-06 16:20:42 UTC
Ok, :gulp: ... I'm familiar with Git and bisection; however, I have no idea how to automate the testing of a graphical installer, pushing some buttons, and then testing for crash.  And, I think there are too many commits between 1.5.31 and 1.7.11 to bisect manually.  What do the Wine developers use to automate graphical testing and verification? ... Thanks!
Comment 10 Austin English 2014-02-06 16:59:06 UTC
(In reply to comment #9)
> Ok, :gulp: ... I'm familiar with Git and bisection; however, I have no idea
> how to automate the testing of a graphical installer, pushing some buttons,
> and then testing for crash.  And, I think there are too many commits between
> 1.5.31 and 1.7.11 to bisect manually.  What do the Wine developers use to
> automate graphical testing and verification? ... Thanks!

Most bisects are done manually. You could use AutoHotKey to automate it, if you want, but the effort to get that to test reliably would probably take longer than just doing the test manually..
Comment 11 m27315 2014-02-14 11:30:55 UTC
Created attachment 47534 [details]
regression test script

I finally have a test script that will build a usable wine installation and allow me to test if the app succeeds or not (see attachment).

Curiously, wine-1.5.31 fails using my regression build, even though it succeeds using the Gentoo ebuild of wine-1.5.31.  Currently, it is failing with this brief output:

fixme:win:EnumDisplayDevicesW ((null),0,0x33e028,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33e028,0x00000000), stub!
fixme:win:EnumDisplayDevicesW ((null),0,0x33e028,0x00000000), stub!
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 74080 (device=7 access=1 func=20 method=0)
fixme:mountmgr:harddisk_ioctl Unsupported ioctl 4100c (device=4 access=0 func=403 method=0)
err:ole:CoUninitialize Mismatched CoUninitialize

The addition of the last line is the only difference between the failing and succeeding versions.

Incidentally, there is a bug in Gentoo:

https://bugs.gentoo.org/show_bug.cgi?id=499952

Tracking libpng discrepancies between 32-bit and 64-bit.  This is probably related to the earlier error message, but I do not know if it is related to this most recent error message, since it has no reference to PNG (err:ole:CoUninitialize Mismatched CoUninitialize).

Thoughts and suggestions? ... Thanks!
Comment 12 Anastasius Focht 2014-02-16 05:44:13 UTC
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
Comment 13 Anastasius Focht 2014-02-20 12:11:47 UTC
Hello folks,

this is fixed by commit http://source.winehq.org/git/wine.git/commitdiff/78459aea0dcce1e5b7dd9d30b1e516646f33722d

Thanks Vincent

Regards
Comment 14 Alexandre Julliard 2014-02-20 12:37:19 UTC
Closing bugs fixed in 1.7.13.


Privacy Policy
If you have a privacy inquiry regarding this site, please write to [email protected]

Hosted By CodeWeavers