SDL_Mixer seg fault at exit() under Linux

The latest src release of SDL_mixer is seg faulting at exit (or return from
main). It happens in the demo/playwave code as well. No errors are reported
from any of the SDL_* or Mix_* calls. Also, the seg fault happens regardless
of SDL_Quit or Mix_CloseAudio, and regardless of audio driver. Any cure?

-John

Millaway, John wrote:

The latest src release of SDL_mixer is seg faulting at exit (or return from
main). It happens in the demo/playwave code as well. No errors are reported
from any of the SDL_* or Mix_* calls. Also, the seg fault happens regardless
of SDL_Quit or Mix_CloseAudio, and regardless of audio driver. Any cure?

Does it segfault all the time or just sometimes ?
I have a (pretty big) program that segfaults at exit (in the sound
thread, it seems) in a random fashion. I don’t use SDL_mixer but just
standard SDL audio calls.

I’m on linux/x11, 2.4.24-preempt, SDL cvs (~ 1.2.7). My program uses
nvidia drivers for OpenGL.
What’s your setup ? Do you have a small program that reproduces that
problem ?

Stephane

The latest src release of SDL_mixer is seg faulting at exit
(or return from
main). It happens in the demo/playwave code as well. No
errors are reported
from any of the SDL_* or Mix_* calls. Also, the seg fault
happens regardless
of SDL_Quit or Mix_CloseAudio, and regardless of audio
driver. Any cure?

Does it segfault all the time or just sometimes ?
I have a (pretty big) program that segfaults at exit (in the sound
thread, it seems) in a random fashion. I don’t use SDL_mixer but just
standard SDL audio calls.

I’m on linux/x11, 2.4.24-preempt, SDL cvs (~ 1.2.7). My program uses
nvidia drivers for OpenGL.
What’s your setup ? Do you have a small program that reproduces that
problem ?

It seg faults all the time. No threads. No OpenGL. Latest SDL “release”. My
setups are: (1) Linux 2.4 ATI/glx drivers, (2) FreeBSD 5.1-RELEASE (no GL),
and (3) Mac OS X Panther iBook.

I narrowed it down to SDL audio (not SDL_Mixer) and it occurs in the
`atexit’ callback registered by one of the SDL audio drivers. Here is the
minimal code to reproduce the bug:

#include "SDL.h"
int main (int argc, char** argv){
if (SDL_Init (SDL_INIT_AUDIO) == -1)
exit (-1);
SDL_Quit ();
printf (“Returning…\n”);
return 0;
}

It seg faults all the time. No threads. No OpenGL. Latest SDL “release”. My
setups are: (1) Linux 2.4 ATI/glx drivers, (2) FreeBSD 5.1-RELEASE (no GL),
and (3) Mac OS X Panther iBook.

I narrowed it down to SDL audio (not SDL_Mixer) and it occurs in the
`atexit’ callback registered by one of the SDL audio drivers. Here is the
minimal code to reproduce the bug:

#include "SDL.h"
int main (int argc, char** argv){
if (SDL_Init (SDL_INIT_AUDIO) == -1)
exit (-1);
SDL_Quit ();
printf (“Returning…\n”);
return 0;
}

Yikes! Do you know which audio driver is making the atexit call?

See ya,
-Sam Lantinga, Software Engineer, Blizzard Entertainment

It seg faults all the time. No threads. No OpenGL. Latest
SDL “release”. My
setups are: (1) Linux 2.4 ATI/glx drivers, (2) FreeBSD
5.1-RELEASE (no GL),
and (3) Mac OS X Panther iBook.

I narrowed it down to SDL audio (not SDL_Mixer) and it occurs in the
`atexit’ callback registered by one of the SDL audio
drivers. Here is the
minimal code to reproduce the bug:

#include "SDL.h"
int main (int argc, char** argv){
if (SDL_Init (SDL_INIT_AUDIO) == -1)
exit (-1);
SDL_Quit ();
printf (“Returning…\n”);
return 0;
}

Yikes! Do you know which audio driver is making the atexit call?

On Linux, the crash is somewhere in the depths of artsd’s C++ mess. Couldn’t
track it down in FreeBSD or MacOSX, though. As a workaround, I’m using
_Exit() (new in C99), which skips the atexit() callbacks. Not pretty, but I
can live with it! -John