Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 285448 - games-fps/warsow-0.5 crashes (SIGSEGV) if compiled with -fomit-frame-pointer in C[XX]FLAGS
Summary: games-fps/warsow-0.5 crashes (SIGSEGV) if compiled with -fomit-frame-pointer ...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Games (show other bugs)
Hardware: x86 Linux
: High normal
Assignee: Gentoo Games
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-09-18 13:35 UTC by Gef
Modified: 2009-11-14 18:11 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
console output and backstrace for warsow, from gdb (gdb-run-warsow.log,13.84 KB, text/plain)
2009-09-18 13:37 UTC, Gef
Details
snippet from as_callfunc_x86.cpp (as_callfunc_x86.cpp,2.46 KB, text/plain)
2009-09-18 13:41 UTC, Gef
Details
patch to add conditionnal filter-flags depending on angelscript use-flag (warsow-0.5.ebuild.patch,863 bytes, patch)
2009-09-18 20:26 UTC, Gef
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Gef 2009-09-18 13:35:03 UTC
As specified in the description, warsow compiled with following flags :
> CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer"
> CXXFLAGS="${CFLAGS}"
> LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=gnu"
> USE="-debug" FEATURES="-ccache" emerge -v warsow
will SIGSEGV when starting a new game (with default settings) just after loading angelscript/gametype scripts.

I compiled it with the following flags, other system settings unchanged :
> CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer -ggdb"
> CXXFLAGS="${CFLAGS}"
> LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=gnu"
> USE="angelscript openal opengl debug" FEATURES="-ccache nostrip" emerge -v warsow
I reproduced the crash when running warsow in gdb (see backtrace) in attachements. The function where it sigsegv'd is an asm() call, more precisely a pop instruction. See snippet of code in attachements. This code is from angelscript library code bundled into the sdk.

I then recompiled it with the following flags, other system settings unchanged  :
> CFLAGS="-O2 -march=native -pipe -ggdb"
> CXXFLAGS="${CFLAGS}"
> LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=gnu"
> FEATURES="-ccache nostrip" USE="angelscript openal opengl debug" emerge -av warsow
And could *not* reproduce the crash in the very same situations.

aballier (on #gentoo-dev-help, many thanks to him for his advice) noticed that offended asm() call does not specify clobber list of registers.
I did not try (yet) to reproduce it on another system (only two x86 systems here)

Reproducible: Always

Steps to Reproduce:
1. Set CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer -ggdb" and CXXFLAGS="${CFLAGS}"
2. USE="angelscript openal opengl debug" FEATURES="-ccache nostrip" emerge -v warsow
3. run warsow, start a local game with default settings

Actual Results:  
warsow SIGSEGV

Expected Results:  
warsow starts a new game

emerge --info (see above for compile-time CFLAGS) :
Portage 2.2_rc40 (default/linux/x86/10.0/desktop, gcc-4.4.1, glibc-2.10.1-r0, 2.6.31-tuxonice-low-tickless-hrt-ipv6 i686)
=================================================================
System uname: Linux-2.6.31-tuxonice-low-tickless-hrt-ipv6-i686-Intel-R-_Core-TM-2_Duo_CPU_T7300_@_2.00GHz-with-gentoo-2.0.1
Timestamp of tree: Thu, 17 Sep 2009 22:15:01 +0000
distcc 3.1 i686-pc-linux-gnu [disabled]
ccache version 2.4 [enabled]
app-shells/bash:     4.0_p33
dev-java/java-config: 2.1.9-r1
dev-lang/python:     2.6.2-r1
dev-util/ccache:     2.4-r8
dev-util/cmake:      2.6.4-r2
sys-apps/baselayout: 2.0.1
sys-apps/openrc:     0.4.3-r3
sys-apps/sandbox:    2.1
sys-devel/autoconf:  2.13, 2.63-r1
sys-devel/automake:  1.8.5-r3, 1.9.6-r2, 1.10.2, 1.11
sys-devel/binutils:  2.19.1-r1
sys-devel/gcc-config: 1.4.1
sys-devel/libtool:   2.2.6a
virtual/os-headers:  2.6.30-r1
ACCEPT_KEYWORDS="x86 ~x86"
CBUILD="i686-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe -fomit-frame-pointer"
CHOST="i686-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/php/apache2-php5/ext-active/ /etc/php/cgi-php5/ext-active/ /etc/php/cli-php5/ext-active/ /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /etc/udev/rules.d"
CXXFLAGS="-O2 -march=native -pipe -fomit-frame-pointer"
DISTDIR="/usr/distfiles"
FEATURES="assume-digests ccache collision-protect distlocks fixpackages parallel-fetch preserve-libs preserved-rebuild protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch"
GENTOO_MIRRORS="http://ftp.free.fr/mirrors/ftp.gentoo.org/ http://mirror.ovh.net/gentoo-distfiles/"
LANG="fr_FR.UTF-8"
LC_ALL="fr_FR.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,--hash-style=gnu"
LINGUAS="fr fr_FR"
MAKEOPTS="-j3"
PKGDIR="/usr/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/portage/local/zeta-overlay /usr/portage/local/layman/desktop-effects /usr/portage/local/layman/mozilla /usr/portage/local/layman/wschlich-testing /usr/portage/local/layman/x11 /usr/portage/local/layman/sunrise"
SYNC="rsync://rsync.fr.gentoo.org/gentoo-portage"
USE="X a52 aac acl acpi alsa apm berkdb bluetooth branding bzip2 cairo cdr cli cracklib crypt dbus dri dts dvd dvdr emboss encode evo exif ffmpeg flac fortran gdbm gif gnutls gpm gstreamer gtk hal iconv id3tag ipv6 isdnlog jpeg lame laptop libnotify mad mikmod mmx mp3 mp4 mpeg mudflap ncurses nls nptl nptlonly nvidia ogg opengl openmp pam pcre pdf perl png ppds pppd python qt3support qt4 quicktime readline reflection sdl session spell spl sse sse2 ssl ssse3 svg sysfs tcpd threads thunar tiff truetype unicode usb vdpau vorbis win32codecs x264 x86 xcb xinerama xml xorg xulrunner xv xvid xvmc zlib" ALSA_CARDS="hda-intel" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" CAMERAS="canon ptp2" ELIBC="glibc" INPUT_DEVICES="evdev synaptics" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="fr fr_FR" QEMU_SOFTMMU_TARGETS="x86_64" QEMU_USER_TARGETS="x86_64" USERLAND="GNU" VIDEO_CARDS="nvidia"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, FFLAGS, INSTALL_MASK, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS
Comment 1 Gef 2009-09-18 13:37:20 UTC
Created attachment 204514 [details]
console output and backstrace for warsow, from gdb
Comment 2 Gef 2009-09-18 13:41:19 UTC
Created attachment 204516 [details]
snippet from as_callfunc_x86.cpp

The line "where" code segfault is line 96 (585 in full code). I can upload original file if needed.
Comment 3 Gef 2009-09-18 18:48:56 UTC
Looks like another Gentoo user encountered the same bug and figured out the same work-around later today : http://www.warsow.net/forum/viewtopic.php?id=21040
(see posts 1,12,15,16).
Comment 4 Gef 2009-09-18 20:26:13 UTC
Created attachment 204546 [details, diff]
patch to add conditionnal filter-flags depending on angelscript use-flag

Patch for implementing a quick workaround.
Comment 5 Gef 2009-10-05 17:41:02 UTC
As upstream doesn't really seem interested in this one (see link in comment #3), i vote for applying proposed patch (or any other workaround). In actual state, game is unusable.
Comment 6 Mr. Bones. (RETIRED) gentoo-dev 2009-10-05 17:46:50 UTC
If the code is that fragile and upstream that uninterested....

I added strip-flags to the ebuild.  Resync and it should work now.
Comment 7 Gef 2009-11-14 14:22:52 UTC
I reopen the bug, as the "strip-flags" patch used to solve the issue on x86, but not on amd64 (I switched my box to amd64 a while ago).
Comment 8 Tristan Heaven (RETIRED) gentoo-dev 2009-11-14 17:06:31 UTC
try -r1
Comment 9 Gef 2009-11-14 18:07:57 UTC
(In reply to comment #8)
> try -r1
> 
W00t! Your work on warsow-0.5-build.patch solves the issue. Thanks you very much for working on it.