Bug#593422: openarena: Segfaults unless pulseaudio is installed and running.

Simon McVittie smcv at debian.org
Thu Aug 19 22:35:47 UTC 2010


Here's a traceback (this is ioquake3 running Quake III Arena, not openarena,
but it's basically the same), with debug symbols for as much as I could get,
and ioquake3 and SDL rebuilt with debug. I've added a bit of commentary but
not deleted anything from the traceback.

This is with s_alDevice "ALSA Software".

> ------ Initializing Sound ------
> [New Thread 0x7fffe359e710 (LWP 1504)]
> [Thread 0x7fffe359e710 (LWP 1504) exited]
> [New Thread 0x7fffe359e710 (LWP 1505)]
> [Thread 0x7fffe359e710 (LWP 1505) exited]
> [New Thread 0x7fffe359e710 (LWP 1506)]
> [Thread 0x7fffe359e710 (LWP 1506) exited]
> [New Thread 0x7fffe359e710 (LWP 1507)]
> [Thread 0x7fffe359e710 (LWP 1507) exited]
> [New Thread 0x7fffe359e710 (LWP 1508)]
> [New Thread 0x7fffe2d9d710 (LWP 1509)]
> Allocated 96 sources.
> [New Thread 0x7fffde376710 (LWP 1510)]
> [Thread 0x7fffde376710 (LWP 1510) exited]
> [New Thread 0x7fffde376710 (LWP 1511)]
> [Thread 0x7fffde376710 (LWP 1511) exited]
> [New Thread 0x7fffde376710 (LWP 1512)]
> [Thread 0x7fffde376710 (LWP 1512) exited]
> [New Thread 0x7fffde376710 (LWP 1513)]
> [Thread 0x7fffde376710 (LWP 1513) exited]
> OpenAL default capture device is 'PulseAudio Capture'
> 
> Program received signal SIGSEGV, Segmentation fault.
> [Switching to Thread 0x7fffe359e710 (LWP 1508)]
> 0x00007fffe77369b0 in ?? ()

(Does this mean the SEGV was provoked by LWP 1508?)

Not sure what this next thread does... it might not have initialized its stack
properly yet?

> [New Thread 0x7fffde376710 (LWP 1514)]
> 
> Thread 12 (Thread 0x7fffde376710 (LWP 1514)):
> #0  clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:84
> No locals.
> #1  0x00007ffff4c0c800 in ?? () at pthread_create.c:217
>    from /lib/libpthread.so.0
> No symbol table info available.
> #2  0x00007fffde376710 in ?? ()
> No symbol table info available.
> #3  0x0000000000000000 in ?? ()
> No symbol table info available.

This looks like an ALSA output thread:

> Thread 7 (Thread 0x7fffe2d9d710 (LWP 1509)):
> #0  0x00007ffff5c2d103 in *__GI___poll (fds=<value optimized out>, 
>     nfds=<value optimized out>, timeout=-1)
>     at ../sysdeps/unix/sysv/linux/poll.c:87
>         _a3 = -1
>         _a1 = 140736999312608
>         resultvar = <value optimized out>
>         _a2 = 1
>         oldtype = 0
>         result = <value optimized out>
> #1  0x00007fffe798f4da in ?? () from /usr/lib/libasound.so.2
> No symbol table info available.
> #2  0x00007fffe798f7bd in ?? () from /usr/lib/libasound.so.2
> No symbol table info available.
> #3  0x00007fffe79cd9ab in ?? () from /usr/lib/libasound.so.2
> No symbol table info available.
> #4  0x00007ffff745bc48 in ALSANoMMapProc (ptr=<value optimized out>)
>     at /build/andres-openal-soft_1.12.854-2-amd64-LKOA6y/openal-soft-1.12.854/Alc/alsa.c:453
>         ret = -516
>         state = <value optimized out>
>         pDevice = 0x7fffe7c1f010
>         data = 0x23ba520
>         avail = <value optimized out>
>         WritePtr = 0x270f410 ""
> #5  0x00007ffff74599aa in StarterFunc (ptr=0x2713700)
>     at /build/andres-openal-soft_1.12.854-2-amd64-LKOA6y/openal-soft-1.12.854/Alc/alcThread.c:95
> No locals.
> #6  0x00007ffff4c0c8ba in start_thread (arg=<value optimized out>)
>     at pthread_create.c:300
>         __res = <value optimized out>
>         pd = 0x7fffe2d9d710
>         unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140736999315216, 
>                 2632053607707369331, 140737299705632, 0, 140737354125376, 3, 
>                 -2632024695615070349, -2632064475428102285}, 
>               mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, 
>             data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
>         not_first_call = <value optimized out>
>         freesize = <value optimized out>
>         __PRETTY_FUNCTION__ = "start_thread"
> #7  0x00007ffff5c3801d in clone ()
>     at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
> No locals.
> #8  0x0000000000000000 in ?? ()
> No symbol table info available.

This one looks like the interesting one: it's the PA thread:

> Thread 6 (Thread 0x7fffe359e710 (LWP 1508)):
> #0  0x00007fffe77369b0 in ?? ()
> No symbol table info available.
> #1  0x00007ffff574c9c7 in pa_command_request (pd=<value optimized out>, 
>     command=<value optimized out>, tag=<value optimized out>, t=0x270edf0, 
>     userdata=0x270a740) at pulse/stream.c:745

Here's the code:

744    if (s->requested_bytes > 0 && s->write_callback)
745        s->write_callback(s, (size_t) s->requested_bytes, s->write_userdata);

So it looks as though s->write_callback is somehow broken.

I've seen a similar crash for o->stream->latency_update_callback in
stream_get_timing_info_callback.

>         s = 0x270e3c0
>         bytes = 5344
>         channel = 0
>         __func__ = "pa_command_request"
>         __PRETTY_FUNCTION__ = "pa_command_request"
> #2  0x00007ffff2ea05a6 in pa_pdispatch_run (pd=0x2712f00, 
>     packet=<value optimized out>, creds=<value optimized out>, 
>     userdata=0x270a740) at pulsecore/pdispatch.c:331
>         tag = 4294967295
>         command = 61
>         ts = 0x270edf0
>         ret = 0
>         __func__ = "pa_pdispatch_run"
>         __PRETTY_FUNCTION__ = "pa_pdispatch_run"
> #3  0x00007ffff5734d9d in pstream_packet_callback (p=<value optimized out>, 
>     packet=0x273f240, creds=0x2713200, userdata=0x270a740)
>     at pulse/context.c:360
>         __func__ = "pstream_packet_callback"
>         __PRETTY_FUNCTION__ = "pstream_packet_callback"
> #4  0x00007ffff2ea4314 in do_read (p=0x27130b0) at pulsecore/pstream.c:816
>         release_memblock = 0x0
>         d = <value optimized out>
>         l = 20
>         r = 20
> #5  do_something (p=0x27130b0) at pulsecore/pstream.c:184
>         __func__ = "do_something"
>         __PRETTY_FUNCTION__ = "do_something"
> #6  0x00007ffff5741bdd in dispatch_pollfds (m=0x2709df0)
>     at pulse/mainloop.c:688
>         e = 0x271fb00
>         k = 0
>         r = 1
> #7  pa_mainloop_dispatch (m=0x2709df0) at pulse/mainloop.c:933
>         dispatched = 0
>         __func__ = "pa_mainloop_dispatch"
>         __PRETTY_FUNCTION__ = "pa_mainloop_dispatch"
> #8  0x00007ffff5741f68 in pa_mainloop_iterate (m=0x2709df0, 
>     block=<value optimized out>, retval=0x0) at pulse/mainloop.c:964
>         r = <value optimized out>
>         __func__ = "pa_mainloop_iterate"
>         __PRETTY_FUNCTION__ = "pa_mainloop_iterate"
> #9  0x00007ffff5742010 in pa_mainloop_run (m=0x2709df0, retval=0x0)
>     at pulse/mainloop.c:979
>         r = <value optimized out>
> #10 0x00007ffff57508eb in thread (userdata=0x2722380)
>     at pulse/thread-mainloop.c:94
>         mask = {__val = {18446744067267100671, 
>             18446744073709551615 <repeats 15 times>}}
> #11 0x00007ffff2eb1700 in internal_thread_func (userdata=0x2724dc0)
>     at pulsecore/thread-posix.c:72
>         __func__ = "internal_thread_func"
>         __PRETTY_FUNCTION__ = "internal_thread_func"
> #12 0x00007ffff4c0c8ba in start_thread (arg=<value optimized out>)
>     at pthread_create.c:300
>         __res = <value optimized out>
>         pd = 0x7fffe359e710
>         unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140737007707920, 
>                 2632053607707369331, 140737299705632, 0, 140737354125376, 3, 
>                 -2632027993613082765, -2632064475428102285}, 
>               mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, 
>             data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
>         not_first_call = <value optimized out>
>         freesize = <value optimized out>
>         __PRETTY_FUNCTION__ = "start_thread"
> #13 0x00007ffff5c3801d in clone ()
>     at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
> No locals.
> #14 0x0000000000000000 in ?? ()
> No symbol table info available.

This is the main thread:

> Thread 1 (Thread 0x7ffff7fc2780 (LWP 1499)):
> #0  clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:84
> No locals.
> #1  0x00007ffff4c0cb24 in do_clone (pd=0x7fffde376710, attr=0x7ffff4c16f20, 
>     stackaddr=0x7fffde3769e0, stopped=1, fct=<value optimized out>, 
>     clone_flags=<value optimized out>)
>     at ../nptl/sysdeps/pthread/createthread.c:75
> No locals.
> #2  0x00007ffff4c0d0d2 in create_thread (newthread=<value optimized out>, 
>     attr=<value optimized out>, start_routine=<value optimized out>, 
>     arg=<value optimized out>) at ../nptl/sysdeps/pthread/createthread.c:205
>         stopped = <value optimized out>
> #3  __pthread_create_2_1 (newthread=<value optimized out>, 
>     attr=<value optimized out>, start_routine=<value optimized out>, 
>     arg=<value optimized out>) at pthread_create.c:561
>         stackaddr = 0x7fffde3769e0
>         iattr = 0x7ffff4c16f20
>         pd = 0x7fffde376710
>         err = -134229952
> #4  0x00007ffff2eb1825 in pa_thread_new (thread_func=0x7ffff57508b0 <thread>, 
>     userdata=0x2722410) at pulsecore/thread-posix.c:89
>         t = <value optimized out>
>         __func__ = "pa_thread_new"
>         __PRETTY_FUNCTION__ = "pa_thread_new"
> #5  0x00007ffff5750805 in pa_threaded_mainloop_start (m=0x2722410)
>     at pulse/thread-mainloop.c:148
>         __func__ = "pa_threaded_mainloop_start"
>         __PRETTY_FUNCTION__ = "pa_threaded_mainloop_start"
> #6  0x00007ffff7462ce3 in pulse_open (device=0x7fffe78a9010, 
>     device_name=0x7ffff7469b90 "PulseAudio Capture")
>     at /build/andres-openal-soft_1.12.854-2-amd64-LKOA6y/openal-soft-1.12.854/Alc/pulseaudio.c:462
>         data = 0x27412b0
>         state = <value optimized out>
> #7  0x00007ffff7464ca7 in pulse_open_capture (device=0x7fffe78a9010, 
>     device_name=0x7ffff7469b90 "PulseAudio Capture")
>     at /build/andres-openal-soft_1.12.854-2-amd64-LKOA6y/openal-soft-1.12.854/Alc/pulseaudio.c:775
>         data = <value optimized out>
>         state = <value optimized out>
>         chanmap = {channels = 255 '\377', map = {PA_CHANNEL_POSITION_MONO, 
>             -169058648, 32767, -169058752, 32767, 590040, 
>             PA_CHANNEL_POSITION_MONO, -10928, 126, 
>             PA_CHANNEL_POSITION_REAR_LEFT, PA_CHANNEL_POSITION_MONO, 590080, 
>             PA_CHANNEL_POSITION_MONO, PA_CHANNEL_POSITION_MONO, 36878, 
>             17971456, PA_CHANNEL_POSITION_MONO, PA_CHANNEL_POSITION_MONO, 
>             PA_CHANNEL_POSITION_MONO, 59424, PA_CHANNEL_POSITION_MONO, 
>             41166816, PA_CHANNEL_POSITION_MONO, 590040, 
>             PA_CHANNEL_POSITION_MONO, -169058752, 32767, -169058752, 32767, 
>             -172101806, 32767, 1786}}
> #8  0x00007ffff7440207 in alcCaptureOpenDevice (deviceName=0x0, 
>     frequency=<value optimized out>, format=<value optimized out>, 
>     SampleSize=<value optimized out>)
>     at /build/andres-openal-soft_1.12.854-2-amd64-LKOA6y/openal-soft-1.12.854/Alc/ALc.c:712
>         device = 0x7fffe78a9010
>         i = <value optimized out>
> #9  0x0000000000476a08 in S_AL_Init (si=0xbfe900)
>     at code/client/snd_openal.c:2463
>         device = <value optimized out>
> #10 0x000000000047388c in S_Init () at code/client/snd_main.c:504
>         cv = 0x5ea
>         started = <value optimized out>
> #11 0x0000000000428d7d in CL_StartHunkUsers (rendererOnly=qfalse)
>     at code/client/cl_main.c:2852
> No locals.
> #12 0x000000000044bddd in Com_Init (commandLine=<value optimized out>)
>     at code/qcommon/common.c:2797
>         s = <value optimized out>
>         qport = -922537196
> #13 0x0000000000539adb in main (argc=8, argv=0x7fffffffe030)
>     at code/sys/sys_main.c:578
>         i = 8
>         commandLine = "\000set fs_basepath /usr/share/games/quake3 \000set s_alDevice \"ALSA Software\" ", '\000' <repeats 950 times>
>         ver = <value optimized out>





More information about the Pkg-games-devel mailing list