http://bugs.winehq.org/show_bug.cgi?id=17971
Summary: GCC optimisations cause workaround for Slingplayer bug 13371 to fail Product: Wine Version: 1.1.17 Platform: PC URL: http://download.slingmedia.com/player/pc/SlingPlayer- Setup-EU-1.5.1.343.exe OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: ole32 AssignedTo: wine-bugs@winehq.org ReportedBy: kennybobs@o2.co.uk
The workaround for Bug 13371 is to use native qcap.dll and quartz.dll. Up to Wine 1.1.16, the workarounds work fine. With 1.1.17 (and 1.1.18) the workarounds fail (resulting in the same DLL Function Crash error).
While attempting a git bisect I found that the workaround still worked when using "gcc -O0" to compile, but "gcc -O1" causes the workaround to fail.
Result of bisect with gcc -O1:
7b6dd2c9f8339a0bc14aa7f466f5c5a0bb03da06 is first bad commit commit 7b6dd2c9f8339a0bc14aa7f466f5c5a0bb03da06 Author: Alexandre Julliard julliard@winehq.org Date: Wed Mar 11 17:28:21 2009 +0100
ole32: Get rid of WINE_StringFromCLSID and A->W conversions.
:040000 040000 ccd95ffc3e797d4978e121994715610434851ca5 dac4595337bddbc841d737265254e1bc52ccea03 M dlls
Reverting to previous commit allows the workaround to work with optimisations on.
This is kind of a blocker to Bug 13371 as the pre-compiled .debs from the WineHQ repository uses -O2 optimisation.
To complete the bisect, I had to move from GCC 4.3.2-1ubuntu12 to GCC 4.3.3 I compiled myself, as the results were random (GCC bug).
Tested in latest gitwine wine-1.1.18-199-ga9c0c24 and an unhandled exception occurs with -O1, workaround works with -O0.