Page 1 of 1
Segmentation fault when having a wrong alsa-out-device setting in openalrc
Posted: 03 Sep 2006, 00:44
by Haudrauf
Warzone2100 Version
2.0.4 (own-compiled and your binary affected)
Operating System
Linux goten 2.6.16-gentoo-r3 #1 PREEMPT Fri Aug 18 18:14:43 CEST 2006 i686 AMD Athlon(tm) Processor GNU/Linux
Hardware Information
AMD Athlon Thunderbird 1200mhz, NVidia Geforce2 GTS, 384mb ram
Warzone2100 Configuration
Hm? Standard, I guess. Using
Code: Select all
warzone2100 --viewport 800x600 --savegame hehe1.gam --fullscreen
to start it.
Bug Description
I load my savegame. As soon as I see the game screen with my moving tanks, it takes 5 seconds then it segfaults. Savegame is attached to this post.
Re: A segmentation fault from somewhere
Posted: 03 Sep 2006, 02:56
by DevUrandom
Hi!
Thanks for the report!
I just tried the savegame on my box using the current svn version and it did not crash. So either this is allready fixed or it is some Warzone-weirdness going on.
Could you attach a backtrace so I can have a look?
That would help a lot, thanks,
Dennis
Re: A segmentation fault from somewhere
Posted: 03 Sep 2006, 03:29
by Haudrauf
Hi random device,
this topic here got me suspicious..
http://wz.rootzilla.de/forum/index.php?topic=53.0
..so I tried to manually install the latest OpenAL and recompile warzone 2.0.4.
Warzone had no sound then..
But the crash did NOT happen - I saved again and then installed the old OpenAL I had before, recompiled Warzone (just in case) and could go on playing.
My OpenAL version was 0.0.8
See
http://www.gentoo-portage.com/media-libs/openal (latest that gentoo offers)
-------
Code: Select all
(gdb) run
Starting program: /usr/local/bin/warzone2100 1024x768 --savegame hehe1.gam --fullscreen
[Thread debugging using libthread_db enabled]
[New Thread -1224173872 (LWP 30707)]
ALSA lib confmisc.c:670:(snd_func_card_driver) cannot find card '1'
ALSA lib conf.c:3479:(_snd_config_evaluate) function snd_func_card_driver returned error: No such device
ALSA lib confmisc.c:391:(snd_func_concat) error evaluating strings
ALSA lib conf.c:3479:(_snd_config_evaluate) function snd_func_concat returned error: No such device
ALSA lib confmisc.c:1070:(snd_func_refer) error evaluating name
ALSA lib conf.c:3479:(_snd_config_evaluate) function snd_func_refer returned error: No such device
ALSA lib conf.c:3947:(snd_config_expand) Evaluate error: No such device
ALSA lib pcm.c:2146:(snd_pcm_open_noupdate) Unknown PCM surround51:1,0
[New Thread -1269642320 (LWP 30710)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1269642320 (LWP 30710)]
0xb7d0073a in alDistanceModel () from /usr/lib/libopenal.so.0
(gdb) Fatal signal: Segmentation Fault (SDL Parachute Deployed)
Terminated
Couldn't start backtracing.. Screen hang and I needed to kill gdb.
Re: A segmentation fault from somewhere
Posted: 03 Sep 2006, 13:56
by DevUrandom
You could start in --window mode.
You always seem to get the segfault in alDistanceModel(), I don't think that was the function where the other reported segfault happened. So a full backtrace might be really useful.
It would be nice if you could do a debug compile and then fetch a "bt full" with gdb. (If you don't want to compile again a normal "bt" would be ok, too.)
Re: A segmentation fault from somewhere
Posted: 03 Sep 2006, 19:22
by Haudrauf
!!
I found something (no idea where it was) that pointed me to
/etc/openalrc.
I had some surround device as output device:
Code: Select all
# Use ALSA (also valid: sdl, native)
(define devices '(alsa))
# Four speaker surround with ALSA
(define speaker-num 2)
(define alsa-out-device "surround51:1,0")
# For ALSA-in support (ie. voice chat)
(define alsa-in-device "hw:1,0")
Notice "surround51:1,0" which was my faulty setting. I changed it to "hw:0,0" and now I can load the savegame and it does NOT crash after 5 seconds.
Small backtrace (no debug build): -- How do I actually build the debug version? (manually, not with the gentoo package) :'(
Code: Select all
(gdb) run
Starting program: /usr/local/bin/warzone2100 --savegame hehe1.gam --window
[Thread debugging using libthread_db enabled]
[New Thread -1224210736 (LWP 10723)]
ALSA lib confmisc.c:670:(snd_func_card_driver) cannot find card '1'
ALSA lib conf.c:3479:(_snd_config_evaluate) function snd_func_card_driver returned error: No such device
ALSA lib confmisc.c:391:(snd_func_concat) error evaluating strings
ALSA lib conf.c:3479:(_snd_config_evaluate) function snd_func_concat returned error: No such device
ALSA lib confmisc.c:1070:(snd_func_refer) error evaluating name
ALSA lib conf.c:3479:(_snd_config_evaluate) function snd_func_refer returned error: No such device
ALSA lib conf.c:3947:(snd_config_expand) Evaluate error: No such device
ALSA lib pcm.c:2146:(snd_pcm_open_noupdate) Unknown PCM surround51:1,0
[New Thread -1266242640 (LWP 10726)]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1266242640 (LWP 10726)]
0xb7cf7751 in alDistanceModel () from /usr/lib/libopenal.so.0
(gdb) bt
#0 0xb7cf7751 in alDistanceModel () from /usr/lib/libopenal.so.0
#1 0x00000000 in ?? ()
Re: A segmentation fault from somewhere
Posted: 04 Sep 2006, 18:58
by DevUrandom
So this was a bug in OpenAL, segfaulting with wrong openalrc settings. (You might want to report this to Gentoo/OpenAL?)
The backtrace was ... very small.
But as the problem is not in Warzone this is normal.
You can compile Warzone in debug mode with ./configure --enable-debug, an alternative to asking would have been to look into the ebuild.
But for this bug you don't need another backtrace. At least not for us. (Perhaps OpenAL wants one, but then you need a debug build of OpenAL...)