http://bugs.winehq.org/show_bug.cgi?id=27559
--- Comment #11 from Anastasius Focht focht@gmx.net 2011-11-21 15:43:56 CST --- Hello Andy,
--- quote --- I was a bit hasty. I got the reply, which says that -fno-omit-frame-pointer is present for the 1.3.33 build. Should this report be extracted to a separate bug then? --- quote ---
I downloaded the openSUSE 32 bit Wine RPM "wine-32bit-1.3.33-2.1.i586.rpm" from http://software.opensuse.org/search?q=wine&baseproject=openSUSE%3A12.1 and extracted everything "offline" using "rpm2cpio wine-32bit-1.3.33-2.1.i586.rpm | cpio -vid" Disassembly of "rpcrt4.dll.so" shows the frame pointer is abused everywhere which explains the crash.
Fortunately the build logs are also available online:
https://build.opensuse.org/package/rawlog?arch=i586&package=wine&pro...
--- snip --- gcc -c -I. -I. -I../../include -I../../include -D__WINESRC__ -D_RPCRT4_ -DCOM_NO_WINDOWS_H -DMSWMSG -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body -Wstrict-prototypes -Wtype-limits -Wunused-but-set-parameter -Wwrite-strings -fno-omit-frame-pointer -Wpointer-arith -Wlogical-op -I/usr/include/freetype2 -DLDAP_DEPRECATED=1 -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0 -o rpc_server.o rpc_server.c --- snip ---
"-fno-omit-frame-pointer" is passed but overridden later with "-fomit-frame-pointer". Hence all binaries are compiled as if default gcc 4.6.x setting is used, causing app breakage.
The problematic .spec file snippet:
--- snip --- %ifarch %ix86 # Steam hates it. export RPM_OPT_FLAGS=`echo %{optflags}|sed -e 's/-fomit-frame-pointer//'` %endif
CFLAGS="-DLDAP_DEPRECATED=1 %{optflags}" \ ... --- snip ---
corresponding output:
--- snip --- ++ echo -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g ++ sed -e s/-fomit-frame-pointer// + export 'RPM_OPT_FLAGS= -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' + RPM_OPT_FLAGS=' -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' + CFLAGS='-DLDAP_DEPRECATED=1 -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g' --- snip ---
%optflags vs. $RPM_OPT_FLAGS
All openSUSE 12.x 32 bit Wine builds had this problem from the beginning.
Anyway this is a packaging bug, not Wine.
Regards