Bug 4014

Summary: warzone2100 Segmentation fault with prelink
Product: Mageia Reporter: gil gil <puntogil>
Component: RPM PackagesAssignee: Mageia Bug Squad <bugsquad>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: Normal CC: anssi.hannula, thierry.vignaud, tmb
Version: CauldronKeywords: Triaged
Target Milestone: ---   
Hardware: i586   
OS: Linux   
Whiteboard:
Source RPM: warzone2100-2.3.9-1.mga2 CVE:
Status comment:

Description gil gil 2012-01-04 08:54:54 CET
gdb `which warzone2100`
GNU gdb (GDB) 7.3.50.20110722-4.mga2 (Mageia release 2)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-mageia-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/games/warzone2100...Reading symbols from /usr/lib/debug/usr/games/warzone2100.debug...done.
done.
(gdb) run
Starting program: /usr/games/warzone2100 

Program received signal SIGSEGV, Segmentation fault.
0x4abf8c6c in _dl_relocate_object () from /lib/ld-linux.so.2
(gdb) bt
#0  0x4abf8c6c in _dl_relocate_object () from /lib/ld-linux.so.2
#1  0x4abf11eb in dl_main () from /lib/ld-linux.so.2
#2  0x4ac014f2 in _dl_sysdep_start () from /lib/ld-linux.so.2
#3  0x4abf2a96 in _dl_start () from /lib/ld-linux.so.2
#4  0x4abef287 in _start () from /lib/ld-linux.so.2
Backtrace stopped: Not enough registers or memory available to unwind further
Comment 1 Manuel Hiebel 2012-01-04 13:46:52 CET
Hi, thanks for reporting this bug.
Assigned to the package maintainer.

(Please set the status to 'assigned' if you are working on it)

Keywords: (none) => Triaged
Assignee: bugsquad => lists.jjorge

Comment 2 José Jorge 2012-01-04 21:29:00 CET
please try with warzone2100-2.3.9-2.mga2

Status: NEW => ASSIGNED

Comment 3 gil gil 2012-01-05 05:35:55 CET
hi
with warzone2100-2.3.9-2.mga2

gdb `which warzone2100`
GNU gdb (GDB) 7.3.50.20110722-4.mga2 (Mageia release 2)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-mageia-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/games/warzone2100...Reading symbols from /usr/lib/debug/usr/games/warzone2100.debug...done.
done.
(gdb) run
Starting program: /usr/games/warzone2100 

Program received signal SIGSEGV, Segmentation fault.
0x4abf8c6c in _dl_relocate_object () from /lib/ld-linux.so.2
(gdb) bt
#0  0x4abf8c6c in _dl_relocate_object () from /lib/ld-linux.so.2
#1  0x4abf11eb in dl_main () from /lib/ld-linux.so.2
#2  0x4ac014f2 in _dl_sysdep_start () from /lib/ld-linux.so.2
#3  0x4abf2a96 in _dl_start () from /lib/ld-linux.so.2
#4  0x4abef287 in _start () from /lib/ld-linux.so.2
Backtrace stopped: Not enough registers or memory available to unwind further
Comment 4 José Jorge 2012-01-05 12:40:30 CET
I cannot reproduce here. When does the game crash? at startup?
Comment 5 gil gil 2012-01-05 14:43:03 CET
yes
Comment 6 José Jorge 2012-01-09 11:11:48 CET
Well, I even played all first level to see if it crashes, and nothing happened. Maybe you can install more debug packages to get a full backtrace?
Comment 7 gil gil 2012-01-09 11:35:38 CET
hi

sudo urpmi warzone2100-debug
...
The package warzone2100-debug-2.3.9-2.mga2.i586 is already installed
....
gdb `which warzone2100`
GNU gdb (GDB) 7.3.50.20110722-4.mga2 (Mageia release 2)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-mageia-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/games/warzone2100...Reading symbols from /usr/lib/debug/usr/games/warzone2100.debug...done.
done.
(gdb) run
Starting program: /usr/games/warzone2100 

Program received signal SIGSEGV, Segmentation fault.
0x4abf8c6c in _dl_relocate_object () from /lib/ld-linux.so.2
(gdb) bt
#0  0x4abf8c6c in _dl_relocate_object () from /lib/ld-linux.so.2
#1  0x4abf11eb in dl_main () from /lib/ld-linux.so.2
#2  0x4ac014f2 in _dl_sysdep_start () from /lib/ld-linux.so.2
#3  0x4abf2a96 in _dl_start () from /lib/ld-linux.so.2
#4  0x4abef287 in _start () from /lib/ld-linux.so.2
Backtrace stopped: Not enough registers or memory available to unwind further

i tried to rebult it with (lib)glee support but nothing has changed ...
tks

http://svnweb.mageia.org/packages/cauldron/glee
Comment 8 José Jorge 2012-01-09 12:02:38 CET
(In reply to comment #7)
> The package warzone2100-debug-2.3.9-2.mga2.i586 is already installed

Yes, I meant installing the debug packages for the list given by 

'ldd /usr/games/warzone2100'
Comment 9 gil gil 2012-01-09 12:09:19 CET
ldd /usr/games/warzone2100
        linux-gate.so.1 =>  (0xffffe000)
        libSDL-1.2.so.0 => /usr/lib/libSDL-1.2.so.0 (0x4c1a1000)
        libphysfs.so.1 => /usr/lib/libphysfs.so.1 (0x4af33000)
        libpng15.so.15 => /usr/lib/libpng15.so.15 (0x4b3f9000)
        libvorbisfile.so.3 => /usr/lib/libvorbisfile.so.3 (0x41000000)
        libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x410eb000)
        libogg.so.0 => /usr/lib/libogg.so.0 (0x4ff7b000)
        libtheora.so.0 => /usr/lib/libtheora.so.0 (0x41095000)
        libopenal.so.1 => /usr/lib/libopenal.so.1 (0x4b59b000)
        libGLC.so.0 => /usr/lib/libGLC.so.0 (0x4e08a000)
        libGL.so.1 => /usr/lib/nvidia-current/libGL.so.1 (0xb7676000)
        libGLU.so.1 => /usr/lib/libGLU.so.1 (0xb7602000)
        libpopt.so.0 => /lib/libpopt.so.0 (0x4b65f000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x4b0cc000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x4ae23000)
        libm.so.6 => /lib/i686/libm.so.6 (0x4adab000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x4ae04000)
        libc.so.6 => /lib/i686/libc.so.6 (0x4ac0f000)
        libpthread.so.0 => /lib/i686/libpthread.so.0 (0x4ad8f000)
        libdirectfb-1.5.so.0 => /usr/lib/libdirectfb-1.5.so.0 (0x4b939000)
        libggi.so.2 => /usr/lib/libggi.so.2 (0x4c101000)
        libaa.so.1 => /usr/lib/libaa.so.1 (0x4beb7000)
        libdl.so.2 => /lib/libdl.so.2 (0x4add8000)
        libz.so.1 => /lib/libz.so.1 (0x4adea000)
        librt.so.1 => /lib/i686/librt.so.1 (0x4addf000)
        libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x4b44a000)
        libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x4b36d000)
        libfribidi.so.0 => /usr/lib/libfribidi.so.0 (0x4b71f000)
        /lib/ld-linux.so.2 (0x4abee000)
        libnvidia-tls.so.290.10 => /usr/lib/nvidia-current/tls/libnvidia-tls.so.290.10 (0x4fdaf000)
        libnvidia-glcore.so.290.10 => /usr/lib/nvidia-current/libnvidia-glcore.so.290.10 (0xb57c3000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x4b358000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0x4b0aa000)
        libfusion-1.5.so.0 => /usr/lib/libfusion-1.5.so.0 (0x4b92a000)
        libdirect-1.5.so.0 => /usr/lib/libdirect-1.5.so.0 (0x4b906000)
        libncurses.so.5 => /lib/libncurses.so.5 (0x4bf06000)
        libgii.so.1 => /usr/lib/libgii.so.1 (0x4bee0000)
        libXxf86dga.so.1 => /usr/lib/libXxf86dga.so.1 (0x4be9f000)
        libgg.so.1 => /usr/lib/libgg.so.1 (0x4bea8000)
        libslang.so.2 => /usr/lib/libslang.so.2 (0x4bd71000)
        libgpm.so.2 => /lib/libgpm.so.2 (0x4bed7000)
        libxml2.so.2 => /usr/lib/libxml2.so.2 (0x4b209000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x4b09b000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x4b0a1000)
Comment 10 gil gil 2012-01-09 13:20:21 CET
sudo urpmi physfs-debug libpng-debug libvorbis-debug libtheora-debug SDL12-debug quesoglc-debug popt-debug openal-debug libogg-debug mesa-debug libx11-debug mesa-debug directfb-debug libxml2-debug libxdmcp-debug libxau-debug gpm-debug slang-debug libgii-debug libxxf86dga-debug ncurses-debug libxcb-debug libxext-debug fribidi-debug libggi-debug freetype2-debug fontconfig-debug zlib-debug aalib-debug

gdb `which warzone2100`
GNU gdb (GDB) 7.3.50.20110722-4.mga2 (Mageia release 2)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-mageia-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/games/warzone2100...Reading symbols from /usr/lib/debug/usr/games/warzone2100.debug...done.
done.
(gdb) run
Starting program: /usr/games/warzone2100 

Program received signal SIGSEGV, Segmentation fault.
0x4abf8c6c in _dl_relocate_object () from /lib/ld-linux.so.2
(gdb) bt
#0  0x4abf8c6c in _dl_relocate_object () from /lib/ld-linux.so.2
#1  0x4abf11eb in dl_main () from /lib/ld-linux.so.2
#2  0x4ac014f2 in _dl_sysdep_start () from /lib/ld-linux.so.2
#3  0x4abf2a96 in _dl_start () from /lib/ld-linux.so.2
#4  0x4abef287 in _start () from /lib/ld-linux.so.2
Backtrace stopped: Not enough registers or memory available to unwind further
Comment 11 gil gil 2012-01-09 13:32:13 CET
sudo urpmi glibc-debug

gdb `which warzone2100`
GNU gdb (GDB) 7.3.50.20110722-4.mga2 (Mageia release 2)
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i586-mageia-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/games/warzone2100...Reading symbols from /usr/lib/debug/usr/games/warzone2100.debug...done.
done.
(gdb) run
Starting program: /usr/games/warzone2100 

Program received signal SIGSEGV, Segmentation fault.
elf_dynamic_do_rela (relsize=<optimized out>, reladdr=3085427440, map=0xb7e7e2f0, lazy=<optimized out>) at do-rel.h:105
105                 DO_ELF_MACHINE_REL_RELATIVE (map, l_addr, relative);
(gdb) bt
#0  elf_dynamic_do_rela (relsize=<optimized out>, reladdr=3085427440, map=0xb7e7e2f0, lazy=<optimized out>) at do-rel.h:105
#1  _dl_relocate_object (scope=0xb7e7e4a8, reloc_mode=1, consider_profiling=0) at dl-reloc.c:264
#2  0x4abf11eb in dl_main (phdr=0x8048034, phnum=9, user_entry=0xbfffed94, auxv=0xbfffef58) at rtld.c:2277
#3  0x4ac014f2 in _dl_sysdep_start (start_argptr=0xbfffedf0, dl_main=0x4abf0020 <dl_main>) at ../elf/dl-sysdep.c:244
#4  0x4abf2a96 in _dl_start_final (arg=0xbfffedf0) at rtld.c:344
#5  _dl_start (arg=0xbfffedf0) at rtld.c:570
#6  0x4abef287 in _start () from /lib/ld-linux.so.2
Backtrace stopped: Not enough registers or memory available to unwind further
(gdb)
Comment 12 Anssi Hannula 2012-01-09 16:50:49 CET
I'm also unable to reproduce. Can you do:

ldd /usr/games/warzone2100 | sed -rn 's,^[^/]*(/[^ ]+) .*$,\1,p' | xargs rpm -qf | sort -u

and

ldd /usr/games/warzone2100 | sed -rn 's,^[^/]*(/[^ ]+) .*$,\1,p' | xargs rpm -Vf | sort -u

CC: (none) => anssi.hannula

Comment 13 gil gil 2012-01-09 17:24:32 CET
ldd /usr/games/warzone2100 | sed -rn 's,^[^/]*(/[^ ]+) .*$,\1,p' | xargs rpm -qf | sort -u
glibc-2.14.1-4.mga2
libaa1-1.4.0-0.rc5.23.mga2
libdirectfb1.5_0-1.5.3-3.mga2
libfontconfig1-2.8.0-6.mga2
libfreetype6-2.4.8-2.mga2
libfribidi0-0.19.2-5.mga2
libgcc1-4.6.2-1.mga2
libggi2-2.2.2-18.mga2
libgii1-1.0.2-16.mga2
libgpm2-1.20.6-5.mga1
libmesaglu1-7.11.2-5.mga2
libncurses5-5.9-2.mga2
libogg0-1.3.0-1.mga2
libopenal1-1.13-1.mga2
libphysfs2-2.0.2-1.mga2
libpng15_15-1.5.7-1.mga2
libpopt0-1.16-1.mga1
libquesoglc0-0.7.2-2.mga2
libSDL1.2_0-1.2.14-7.mga2
libslang2-2.2.4-3.mga2
libstdc++6-4.6.2-1.mga2
libtheora0-1.1.1-3.mga2
libvorbis0-1.3.2-1.mga2
libvorbisfile3-1.3.2-1.mga2
libx11_6-1.4.4-2.mga2
libxau6-1.0.6-2.mga2
libxcb1-1.7-3.mga2
libxdmcp6-1.1.0-1.mga1
libxext6-1.3.0-2.mga2
libxml2_2-2.7.8-12.mga2
libxxf86dga1-1.1.2-2.mga2
libzlib1-1.2.5-5.mga2
x11-driver-video-nvidia-current-290.10-1.mga2.nonfree

ldd /usr/games/warzone2100 | sed -rn 's,^[^/]*(/[^ ]+) .*$,\1,p' | xargs rpm -Vf | sort -u
prelink: /usr/lib/libGLC.so.0.0.7: at least one of file's dependencies has changed since prelinking
prelink: /usr/lib/nvidia-current/libnvidia-glcore.so.290.10: prelinked file was modified
prelink: /usr/lib/nvidia-current/libnvidia-glcore.so.290.10: prelinked file was modified
prelink: /usr/lib/nvidia-current/libnvidia-glcore.so.290.10: prelinked file was modified
?S.......    /usr/lib/libGLC.so.0.0.7
?S.......    /usr/lib/nvidia-current/libnvidia-glcore.so.290.10
?........    /usr/sbin/glibc-post-wrapper
Comment 14 Anssi Hannula 2012-01-09 18:18:53 CET
We debugged the issue further in IRC, and it seems that the "prelinked file was modified" warning above is indeed the issue, because replacing those two (actually, either of them) files with the vanilla files fixes the segfault.

The non-working library files are available at
http://onse.fi/files/gil-prelink-libraries.tar.gz (i586)

Adding some prelink/glibc people in CC. Thierry, Thomas, do you have any idea how this could happen, or how it should be solved properly?

CC: (none) => thierry.vignaud, tmb
Summary: warzone2100 Segmentation fault => warzone2100 Segmentation fault with prelink

Comment 15 Thierry Vignaud 2012-01-09 19:05:43 CET
It usually happen when introducing a new glibc that hasn't been tested much with prelink.
Is it fixed when using "prelink -u"?
Comment 16 Anssi Hannula 2012-01-09 19:19:19 CET
It is indeed fixed by:
# prelink -u /usr/lib/libGLC.so.0.0.7 /usr/lib/nvidia-current/libnvidia-glcore.so.290.10

However, it is also fixed by just:
# prelink /usr/lib/libGLC.so.0.0.7 /usr/lib/nvidia-current/libnvidia-glcore.so.290.10

Which suggests that something else is going on, which broke it in the first place...
Comment 17 José Jorge 2012-02-19 22:14:10 CET
So it is a nvidia related bug, I cannot do anything in warzone.

Status: ASSIGNED => NEW
Assignee: lists.jjorge => bugsquad

Comment 18 gil gil 2012-02-19 22:54:01 CET
prelink pbs sorry & tks

Status: NEW => RESOLVED
Resolution: (none) => FIXED