Segmentation Fault,
#1
Hi there. I'm trying to get the 1.1.0.1 binary to work on Ubuntu 10.04.1 LTS. I downloaded the archive assault.cubers.net/download.html

When I run the assaultcube.sh file, the title screen flashes up for a second before I get a seg fault:

Using home directory: /home/X/.assaultcube_v1.1
current locale: en_US.utf8
init: sdl
init: net
init: world
init: video: sdl
init: video: mode
init: video: misc
init: gl
Renderer: GeForce 7600 GT/AGP/SSE2 (NVIDIA Corporation)
Driver: 2.1.2 NVIDIA 195.36.24
init: console
init: sound
Audio devices: PulseAudio Software, ALSA Software, OSS Software
stacktrace:
Segmentation fault

I don't actually use PulseAudio, just ALSA. I uninstalled it a while ago as it caused me so much grief. Any ideas if this could be the culprit?
Thanks given by:
#2
if you don't use pulseaudio, it could be SDL using pulseaudio... try this:

sudo apt-get remove libsdl1.2debian-pulseaudio && sudo apt-get install libsdl1.2debian-alsa
Thanks given by:
#3
^ that.
As you can see in the output, it has PulseAudio listed first, which means SDL will try to use it. But if it doesn't exist, well...
Thanks given by:
#4
(02 Oct 10, 10:04AM)RandumKiwi Wrote: if you don't use pulseaudio, it could be SDL using pulseaudio... try this:

sudo apt-get remove libsdl1.2debian-pulseaudio && sudo apt-get install libsdl1.2debian-alsa

OK, I've executed the above command which removed libsdl1.2debian-all that I was previously using and replaced it with libsdl1.2debian-alsa.

Unfortunately, assaultcube still does exactly the same, and urbanterror has stopped working, as it relied on libsdl1.2debian-all.

Is there anything else I can try, apart from re-installing pulseaudio, which makes my system inoperable?
Thanks given by:
#5
I think I've found a solution. Appears that AC checks for an "openaldevice" alias (hidden somewhere in soundmanager.cpp).

You have to add this line somewhere in init.cfg (NOT in saved.cfg or autoexec.cfg!):
alias openaldevice "ALSA Software"

However, the problem is that this line is overwritten every time AC quits. So you'll either have to remove write permission for init.cfg or use a shell script that does something like
echo >> ~/.assaultcube_v1.1/config/init.cfg "alias openaldevice \"ALSA Software\""
after AC has quit. Of course, the most convenient place would be assaultcube.sh (if you're using it).
Thanks given by:
#6
(02 Oct 10, 04:44PM)tempest Wrote: I think I've found a solution. Appears that AC checks for an "openaldevice" alias (hidden somewhere in soundmanager.cpp).

You have to add this line somewhere in init.cfg (NOT in saved.cfg or autoexec.cfg!):
alias openaldevice "ALSA Software"

However, the problem is that this line is overwritten every time AC quits. So you'll either have to remove write permission for init.cfg or use a shell script that does something like
echo >> ~/.assaultcube_v1.1/config/init.cfg "alias openaldevice \"ALSA Software\""
after AC has quit. Of course, the most convenient place would be assaultcube.sh (if you're using it).

OK, I've run

echo >> ~/.assaultcube_v1.1/config/init.cfg "alias openaldevice \"ALSA Software\""

and also put that command at the end of the assaultcube.sh file. Is this what you mean?

assaultcube is still seg-faulting at the same place.
Thanks given by:
#7
Hmm. Weird.
Try running it in GDB and see what you get.
gdb --args bin_unix/linux_client --home=${HOME}/.assaultcube_v1.1 --init -r -t0
(of course you'll have to cd to AC's main directory first)

But before that, make sure that that stuff is really executed:
echo >> ~/.assaultcube_v1.1/config/init.cfg "alias openaldevice \"ALSA Software\"; echo works"
then run the game, and now you should find works somewhere in the output (even if it doesn't work :S).
Thanks given by:
#8
Ok here's the gdb output
gdb --args bin_unix/linux_client --home=${HOME}/.assaultcube_v1.1 --init -r -t0
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 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 "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/X/assaultcube/1.1.0.1/bin_unix/linux_client...done.
(gdb) r
Starting program: /home/X/assaultcube/1.1.0.1/bin_unix/linux_client --home=/home/X/.assaultcube_v1.1 --init -r -t0
[Thread debugging using libthread_db enabled]
Using home directory: /home/X/.assaultcube_v1.1
works
current locale: en_US.utf8
init: sdl
[New Thread 0xb7a7ab70 (LWP 21009)]
init: net
init: world
init: video: sdl
init: video: mode
init: video: misc
init: gl
Renderer: GeForce 7600 GT/AGP/SSE2 (NVIDIA Corporation)
Driver: 2.1.2 NVIDIA 195.36.24
init: console
init: sound
[New Thread 0xb5fb1b70 (LWP 21010)]
[Thread 0xb5fb1b70 (LWP 21010) exited]
Audio devices: PulseAudio Software, ALSA Software, OSS Software

Program received signal SIGSEGV, Segmentation fault.
0x024d05d0 in ?? ()
(gdb) bt
#0  0x024d05d0 in ?? ()
#1  0x00726bcc in ?? () from /usr/lib/libasound.so.2
#2  0x007276ef in snd_func_card_driver () from /usr/lib/libasound.so.2
#3  0x00725140 in ?? () from /usr/lib/libasound.so.2
#4  0x0071f0e3 in ?? () from /usr/lib/libasound.so.2
#5  0x0071f132 in ?? () from /usr/lib/libasound.so.2
#6  0x00727ab9 in snd_func_concat () from /usr/lib/libasound.so.2
#7  0x00725140 in ?? () from /usr/lib/libasound.so.2
#8  0x0071f0e3 in ?? () from /usr/lib/libasound.so.2
#9  0x00725eba in snd_func_refer () from /usr/lib/libasound.so.2
#10 0x00725140 in ?? () from /usr/lib/libasound.so.2
#11 0x0071f0e3 in ?? () from /usr/lib/libasound.so.2
#12 0x0071f132 in ?? () from /usr/lib/libasound.so.2
#13 0x0071f132 in ?? () from /usr/lib/libasound.so.2
#14 0x007237a8 in snd_config_expand () from /usr/lib/libasound.so.2
#15 0x00724fd4 in snd_config_search_definition () from /usr/lib/libasound.so.2
#16 0x0074c8df in ?? () from /usr/lib/libasound.so.2
#17 0x0030503e in alsa_open_playback (device=0xb69e5008, deviceName=0x81f6458 "ALSA Software")
    at /build/buildd/openal-soft-1.12.854/Alc/alsa.c:572
#18 0x002ece3c in alcOpenDevice (deviceName=0x81f6458 "ALSA Software")
    at /build/buildd/openal-soft-1.12.854/Alc/ALc.c:1755
#19 0x0806e223 in audiomanager::initsound() ()
#20 0x0809e464 in main ()
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) n
Program not restarted.
(gdb) c
Continuing.
stacktrace:

Program received signal SIGSEGV, Segmentation fault.
x86_fallback_frame_state (context=<value optimized out>, fs=0xbfffde4c)
    at ../../../src/libgcc/../gcc/config/i386/linux-unwind.h:125
125    ../../../src/libgcc/../gcc/config/i386/linux-unwind.h: No such file or directory.
    in ../../../src/libgcc/../gcc/config/i386/linux-unwind.h
(gdb) c
Continuing.
[Thread 0xb7a7ab70 (LWP 21009) exited]

Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.
(gdb)

I've altered the other files like you said, and 'works' does indeed appear. It's still crashing though...

I'm a bit new to memory debugging so if there is anything else I can try, please let me know. :)
Thanks given by:
#9
Have you read ACwiki:Sounds and ACwiki:Linux Support - you might have better luck with OpenAL-soft than with the regular OpenAL .. but maybe you haven't even gotten that installed, it should be available from the ubuntu repositories for your release so compiling from source would only be required if your systems fails with the regular OpenAL instance. HTH
Thanks given by:
#10
For now, you can change audio 1 in init.cfg to audio 0, so AC will at least run (without sound, of course).

Other than that, IDK. You can try installing debug symbols for ALSA. Other than that, I'd say you should better ask on the Ubuntu forums, as this seems more like an OS+Driver+HW bug. Also, the guys there definitely know a lot more than I do.
Thanks given by:
#11
Problem solved! I installed alsoft-conf from the repositories, removed pulse audio from there, and now it's working, sound and all.

assaultcube.sh
current locale: en_US.utf8
init: sdl
init: net
init: world
init: video: sdl
init: video: mode
init: video: misc
init: gl
Renderer: GeForce 7600 GT/AGP/SSE2 (NVIDIA Corporation)
Driver: 2.1.2 NVIDIA 195.36.24
init: console
init: sound
Audio devices: ALSA Software
ALSA lib confmisc.c:768:(parse_card) cannot find card 'ICH5'
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such device
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such device
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such device
ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such device
ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
ALSA lib confmisc.c:768:(parse_card) cannot find card 'ICH5'
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_card_driver returned error: No such device
ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_concat returned error: No such device
ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name
ALSA lib conf.c:4154:(_snd_config_evaluate) function snd_func_refer returned error: No such device
ALSA lib conf.c:4633:(snd_config_expand) Evaluate error: No such device
ALSA lib pcm.c:2211:(snd_pcm_open_noupdate) Unknown PCM default
AL lib: alsa.c:587: Could not open playback device 'default': No such device
Sound: OSS Software / OpenAL Soft (OpenAL Community)
Driver: 1.1 ALSOFT 1.12.854
init: cfg
init: models
init: docs
init: localconnect
read map packages/maps/official/ac_shine.cgz rev 2 (67 milliseconds)
ac_shine by DogDancing
loaded textures (226 milliseconds)
loaded mapmodels (3 milliseconds)
loaded mapsounds (551 milliseconds)
game mode is "TDM"
init: mainloop
unarmed: quit
writing to file: config/servers.cfg
writing to file: config/saved.cfg

Thanks everyone!
Thanks given by:
#12
Okay, now I wouldn't call that bunch of errors "working", but if it works, who cares :D
Thanks given by: