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
Created attachment 204514 [details] console output and backstrace for warsow, from gdb
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.
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).
Created attachment 204546 [details, diff] patch to add conditionnal filter-flags depending on angelscript use-flag Patch for implementing a quick workaround.
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.
If the code is that fragile and upstream that uninterested.... I added strip-flags to the ebuild. Resync and it should work now.
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).
try -r1
(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.