It also happened to me but I don't think it's a bug of vegastrike (at least in my case). I ran
top at the same time, it happened when I run out of memory, I saw that both my memory and my swap were full. Vegastrike try to allocate memory too load a new song, it can't be allocate because there's no enough memory so it throw a bad_alloc.
Here an example of the execution stack a the time it occure
Code: Select all
Core was generated by `vegastrike.11149'.
Program terminated with signal 6, Aborted.
#0 0xffffe410 in __kernel_vsyscall ()
(gdb) bt 20
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb7919770 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb791aef3 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7b0a520 in __gnu_cxx::__verbose_terminate_handler ()
from /usr/lib/libstdc++.so.6
#4 0xb7b07f55 in std::set_unexpected () from /usr/lib/libstdc++.so.6
#5 0xb7b07f92 in std::terminate () from /usr/lib/libstdc++.so.6
#6 0xb7b080ca in __cxa_throw () from /usr/lib/libstdc++.so.6
#7 0xb7b0850e in operator new () from /usr/lib/libstdc++.so.6
#8 0x0852fec5 in __gnu_cxx::new_allocator<char>::allocate (this=0xb0c68fd4,
__n=67071580)
at /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/ext/new_allocator.h:88
#9 0x0852feea in std::_Vector_base<char, std::allocator<char> >::_M_allocate (
this=0xb0c68fd4, __n=67071580)
at /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:127
#10 0x08532969 in std::vector<char, std::allocator<char> >::_M_fill_insert (
this=0xb0c68fd4, __position={_M_current = 0x9aebc736 ""}, __n=4096,
__x=@0xb0c68f60)
at /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/vector.tcc:357
#11 0x08532b92 in std::vector<char, std::allocator<char> >::insert (
---Type <return> to continue, or q <return> to quit---
this=0xb0c68fd4, __position={_M_current = 0x9aebc736 ""}, __n=4096,
__x=@0xb0c68f60)
at /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:658
#12 0x08532c77 in std::vector<char, std::allocator<char> >::resize (
this=0xb0c68fd4, __new_size=33539886, __x=0 '\0')
at /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../include/c++/4.1.2/bits/stl_vector.h:426
#13 0x089672f7 in ConvertFormat (ogg=@0xb0c69398) at src/aldrv/al_sound.cpp:403
#14 0x08967b93 in AUDLoadSoundFile (
s=0x15124b38 "../music/militarybase_p.ogg", info=0x997a050)
at src/aldrv/al_sound.cpp:478
#15 0x08a20e03 in Muzak::readerThread (input=0x998ede4)
at src/cmd/music.cpp:392
#16 0xb7e3b504 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#17 0xb79bd51e in clone () from /lib/tls/i686/cmov/libc.so.6
(gdb)
It happened there, because that call need a lot of new memory, so most of the time it's at that moment it run out of memory. But on some few occasion Linux just killed it because the system memory was full.
So if your are like me and have you have an old machine, I think the cheapest solution is bigger swap.