Possible mixer bug

I have been testing the newest version of gltron, and
believe I have encountered a bug in the mixer.

Basically, the music sounds really screwed up. It
is backwards, or fast, or both, or something (it’s
hard to tell). The strange thing is that when I
have another process running ‘cat /dev/audio’,
(e.g. cat /dev/audio > /dev/null), the music plays
correctly!

I tested with the Aliens-1.0.2 demo, and got the same
result.

Something of particular interest is that when I try to
quit the app when the music is playing funky, the app
does not exit cleanly.

In the case of Aliens, the display remains in fullscreen
and seems to still be grabbing input, although it does
not process input or update the display. The music just
continues to loop in its incorrect way. I can use
control-alt-f1 to get to the console and killall -9 aliens.
When I return to X, my display is stuck in 640x480 mode and
control-alt-+/- do not work to change the resolution,
so X must be restarted.

In the case of gltron, the display drops out of fullscreen
and returns to windowed, but the window does not close,
and it continues to grab input. As above, I kill it by
control-alt-f1, killall -9 gltron. In this case, my X
display is still usable afterwards.

JW–
// John Watson
// Software Engineer – STScI Archive Team

----------System info----------------:

voodoo3
pII 300
sblive

XFree86-3.3.5-3
emu10k1-20000306
SDL-1.1.1-1
SDL_mixer-1.0.5-1

[jwatson at coil aliens-1.0.2]$ ldd ./aliens
libSDL_mixer-1.0.so.0 => /usr/lib/libSDL_mixer-1.0.so.0 (0x40018000)
libSDL_image-1.0.so.0 => /usr/lib/libSDL_image-1.0.so.0 (0x40053000)
libSDL-1.1.so.0 => /usr/local/lib/libSDL-1.1.so.0 (0x40068000)
libpthread.so.0 => /lib/libpthread.so.0 (0x400fc000)
libc.so.6 => /lib/libc.so.6 (0x4010d000)
libsmpeg-0.3.so.0 => /usr/lib/libsmpeg-0.3.so.0 (0x40200000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x4025b000)
libpng.so.2 => /usr/lib/libpng.so.2 (0x4027b000)
libz.so.1 => /usr/lib/libz.so.1 (0x40298000)
libesd.so.0 => /usr/lib/libesd.so.0 (0x402a7000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x402ae000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40352000)
libGL.so => /usr/local/lib/libGL.so (0x4035e000)
libdl.so.2 => /lib/libdl.so.2 (0x40460000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
libm.so.6 => /lib/libm.so.6 (0x40463000)
libaudiofile.so.0 => /usr/lib/libaudiofile.so.0 (0x4047f000)
libglide2x.so => /usr/lib/libglide2x.so (0x40491000)

The output of ‘strace aliens’ ends with repeated:

select(0, NULL, NULL, NULL, {0, 10000}) = 0 (Timeout)