Package: xine-lib
Severity: normal
When starting xine (and apps using libxine like amarok), unless I override the
audio
output plugin manually (-A), it tries various audio output plugins. All well
and good, but:
When it tries pulseaudio, unless a pulseaudio daemon is running, it segfaults
rather than moving onto the next audio out plugin (e.g. alsa)
If the pulseaudio daemon is running, it works.
Explicitly doing 'xine -A pulseaudio' also segfaults in the absence of the
pulseaudio daemon.
backtrace suggests the problem may be in libpulse/libpulsecore itself and its
thread handling, but I'm not sure, and can presently only repeat with xine and
apps using xine.
Using the libpulse* from debian/unstable, looking at the upstream pulseaudio
changelog I do see various fixes around threading in later version changelog,
so it's also possible it's a known/fixed issue upstream.
ii libpulse-browse0 0.9.10-3
PulseAudio client libraries (zeroconf support)
ii libpulse-browse0-dbg 0.9.10-3
PulseAudio client libraries (zeroconf support) debugging symbols
ii libpulse-mainloop-glib0 0.9.10-3
PulseAudio client libraries (glib support)
ii libpulse-mainloop-glib0-dbg 0.9.10-3
PulseAudio client libraries (glib support) debugging symbols
ii libpulse0 0.9.10-3
PulseAudio client libraries
ii libpulse0-dbg 0.9.10-3
PulseAudio client libraries detached debugging symbols
ii libpulsecore5 0.9.10-3
PulseAudio sound server core
ii libpulsecore5-dbg 0.9.10-3
PulseAudio sound server core detached debugging symbols
ii pulseaudio 0.9.10-3
PulseAudio sound server
ii pulseaudio-esound-compat 0.9.10-3
PulseAudio ESD compatibility layer
ii pulseaudio-module-gconf 0.9.10-3
GConf module for PulseAudio sound server
ii pulseaudio-module-hal 0.9.10-3 HAL
device detection module for PulseAudio sound server
ii pulseaudio-module-x11 0.9.10-3 X11
module for PulseAudio sound server
ii pulseaudio-module-x11-dbg 0.9.10-3 X11
module for PulseAudio sound server debugging symbols
ii pulseaudio-module-zeroconf 0.9.10-3
Zeroconf module for PulseAudio sound server
ii pulseaudio-module-zeroconf-dbg 0.9.10-3
Zeroconf module for PulseAudio sound server debugging symbols
ii pulseaudio-utils 0.9.10-3
-- System Information:
Debian Release: 5.0
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: amd64 (x86_64)
Kernel: Linux 2.6.26-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=en_IE.UTF-8, LC_CTYPE=en_IE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/bash
Starting program: /usr/bin/xine -A pulseaudio /home/david/wooog.wav
[Thread debugging using libthread_db enabled]
[New Thread 0x7fe19362c700 (LWP 28884)]
[New Thread 0x51ad8950 (LWP 28887)]
[New Thread 0x61ad9950 (LWP 28888)]
[New Thread 0x71ada950 (LWP 28889)]
[New Thread 0x7fe188a76950 (LWP 28890)]
[New Thread 0x7fe177ef6950 (LWP 28891)]
[New Thread 0x7fe15ffff950 (LWP 28892)]
[New Thread 0x7fe14fffe950 (LWP 28893)]
[Thread 0x7fe15ffff950 (LWP 28892) exited]
[Thread 0x7fe14fffe950 (LWP 28893) exited]
[Thread 0x7fe177ef6950 (LWP 28891) exited]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fe19362c700 (LWP 28884)]
pthread_join (threadid=140606356547920, thread_return=0x0) at pthread_join.c:46
46 pthread_join.c: No such file or directory.
in pthread_join.c
Thread 5 (Thread 0x7fe188a76950 (LWP 28890)):
#0 0x00007fe191a49ce2 in select () from /usr/lib/debug/libc.so.6
No symbol table info available.
#1 0x00007fe19332c304 in xine_usec_sleep (usec=<value optimized out>) at
utils.c:481
tm = {tv_sec = 0, tv_usec = 8000}
#2 0x00007fe19331179b in video_out_loop (this_gen=<value optimized out>) at
video_out.c:1246
vpts = 18055
img = (vo_frame_t *) 0x0
this = (vos_t *) 0x2619aa0
next_frame_vpts = 18055
usec_to_sleep = 1000
#3 0x00007fe19176bfc7 in start_thread (arg=<value optimized out>) at
pthread_create.c:297
__res = <value optimized out>
pd = (struct pthread *) 0x7fe188a76950
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140606637042000,
7942061745608195603, 140735935816480, 140606784847616, 0, 4096,
-7929486154035757549, -7929433796591747565},
mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev =
0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = <value optimized out>
robust = <value optimized out>
#4 0x00007fe191a505ad in clone () from /usr/lib/debug/libc.so.6
fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres = {mnt_fsname =
0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0, mnt_freq = 0, mnt_passno =
0}, fs_ret = {fs_spec = 0x0,
fs_file = 0x0, fs_vfstype = 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq =
0, fs_passno = 0}}
__elf_set___libc_subfreeres_element_fstab_free__ = (const void *)
0x7fe191a86480
#5 0x0000000000000000 in ?? ()
No symbol table info available.
Thread 4 (Thread 0x71ada950 (LWP 28889)):
#0 0x00007fe19176ffad in pthread_cond_timedwait@@GLIBC_2.3.2 () from
/usr/lib/debug/libpthread.so.0
No locals.
#1 0x00007fe193303cb1 in metronom_sync_loop (this=0x2614910) at metronom.c:870
tv = {tv_sec = 1232372102, tv_usec = 660059}
ts = {tv_sec = 1232372107, tv_nsec = 660059000}
scr = (scr_plugin_t **) 0x2614a50
pts = 1
#2 0x00007fe19176bfc7 in start_thread (arg=<value optimized out>) at
pthread_create.c:297
__res = <value optimized out>
pd = (struct pthread *) 0x71ada950
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1907206480,
7942061745608195603, 140606784886752, 140606784847616, 0, 4096,
7941882779658223123, -7929433796591747565}, mask_was_saved = 0}},
priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
canceltype = 0}}}
not_first_call = <value optimized out>
robust = <value optimized out>
#3 0x00007fe191a505ad in clone () from /usr/lib/debug/libc.so.6
fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres = {mnt_fsname =
0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0, mnt_freq = 0, mnt_passno =
0}, fs_ret = {fs_spec = 0x0,
fs_file = 0x0, fs_vfstype = 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq =
0, fs_passno = 0}}
__elf_set___libc_subfreeres_element_fstab_free__ = (const void *)
0x7fe191a86480
#4 0x0000000000000000 in ?? ()
No symbol table info available.
Warning: the current language does not match this frame.
Thread 3 (Thread 0x61ad9950 (LWP 28888)):
#0 0x00007fe191a49ce2 in select () from /usr/lib/debug/libc.so.6
No symbol table info available.
#1 0x00007fe19332c304 in xine_usec_sleep (usec=<value optimized out>) at
utils.c:481
tm = {tv_sec = 0, tv_usec = 240000}
#2 0x000000000043ea7a in slider_loop (dummy=<value optimized out>) at
panel.c:511
status = <value optimized out>
speed = 1
pos = 0
secs = 0
i = 1
#3 0x00007fe19176bfc7 in start_thread (arg=<value optimized out>) at
pthread_create.c:297
__res = <value optimized out>
pd = (struct pthread *) 0x61ad9950
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1638766928,
7942061745608195603, 140735935816336, 140606784847616, 0, 4096,
7941847593675521555, -7929433796591747565}, mask_was_saved = 0}},
priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
canceltype = 0}}}
not_first_call = <value optimized out>
robust = <value optimized out>
#4 0x00007fe191a505ad in clone () from /usr/lib/debug/libc.so.6
fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres = {mnt_fsname =
0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0, mnt_freq = 0, mnt_passno =
0}, fs_ret = {fs_spec = 0x0,
fs_file = 0x0, fs_vfstype = 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq =
0, fs_passno = 0}}
__elf_set___libc_subfreeres_element_fstab_free__ = (const void *)
0x7fe191a86480
#5 0x0000000000000000 in ?? ()
No symbol table info available.
Thread 2 (Thread 0x51ad8950 (LWP 28887)):
#0 0x00007fe19176fd29 in pthread_cond_wait@@GLIBC_2.3.2 () from
/usr/lib/debug/libpthread.so.0
No locals.
#1 0x00000000004873d7 in _tips_loop_thread (data=<value optimized out>) at
tips.c:69
tv = {tv_sec = 140606787068480, tv_usec = 1370327376}
ts = {tv_sec = 0, tv_nsec = 0}
#2 0x00007fe19176bfc7 in start_thread (arg=<value optimized out>) at
pthread_create.c:297
__res = <value optimized out>
pd = (struct pthread *) 0x51ad8950
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1370327376,
7942061745608195603, 140735935815936, 140606784847616, 0, 4096,
7941953147328658963, -7929433796591747565}, mask_was_saved = 0}},
priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0,
canceltype = 0}}}
not_first_call = <value optimized out>
robust = <value optimized out>
#3 0x00007fe191a505ad in clone () from /usr/lib/debug/libc.so.6
fstab_state = {fs_fp = 0x0, fs_buffer = 0x0, fs_mntres = {mnt_fsname =
0x0, mnt_dir = 0x0, mnt_type = 0x0, mnt_opts = 0x0, mnt_freq = 0, mnt_passno =
0}, fs_ret = {fs_spec = 0x0,
fs_file = 0x0, fs_vfstype = 0x0, fs_mntops = 0x0, fs_type = 0x0, fs_freq =
0, fs_passno = 0}}
__elf_set___libc_subfreeres_element_fstab_free__ = (const void *)
0x7fe191a86480
#4 0x0000000000000000 in ?? ()
No symbol table info available.
Thread 1 (Thread 0x7fe19362c700 (LWP 28884)):
#0 pthread_join (threadid=140606356547920, thread_return=0x0) at
pthread_join.c:46
result = <value optimized out>
#1 0x00007fe17865ceb2 in pa_thread_free (t=0x7fe177ef6950) at
pulsecore/thread-posix.c:114
__func__ = "pa_thread_free"
__PRETTY_FUNCTION__ = "pa_thread_free"
#2 0x00007fe178640924 in pa_threaded_mainloop_free (m=0x2a3fa40) at
pulse/thread-mainloop.c:127
__func__ = "pa_threaded_mainloop_free"
__PRETTY_FUNCTION__ = "pa_threaded_mainloop_free"
#3 0x00007fe178874b55 in ao_pulse_exit (this_gen=<value optimized out>) at
audio_pulse_out.c:564
this = (pulse_driver_t *) 0x2a3f8f0
#4 0x00007fe178874e5d in open_plugin (class_gen=0x2a3f8c0, data=<value
optimized out>) at audio_pulse_out.c:829
device = <value optimized out>
r = -1
__FUNCTION__ = "open_plugin"
#5 0x00007fe19330c3a1 in xine_open_audio_driver (this=0x2557c50, id=0x2a3d1d0
"pulseaudio", data=0x0) at load_plugins.c:1740
driver = (ao_driver_t *) 0x0
catalog = <value optimized out>
list_id = 0
list_size = 7
#6 0x0000000000426614 in main (argc=<value optimized out>,
argv=0x7fffa3765c18) at main.c:980
aids = (const char * const *) 0x25b7410
i = <value optimized out>
c = <value optimized out>
aos = 1
option_index = 0
audio_channel = -1
window_id = 0
spu_channel = -1
audio_driver_id = 0x254e080 "pulseaudio"
video_driver_id = 0x0
vo_mask = {__val = {8192, 0 <repeats 15 times>}}
_argv = (char **) 0x2548680
_argc = 4
driver_num = 2
session = -1
aspect_ratio = 0
no_auto_start = 0
old_playlist_cfg = <value optimized out>
no_old_playlist = 0
pplugins = (char **) 0x0
pplugins_num = 0
tvout = 0x0
pdeinterlace = 0x0
enable_deinterlace = -1552524688
session_argv = (char **) 0x0
session_argv_num = 0
retval = 0
mutexattr = {__size = "\001\000\000", __align = 1}
Continuing.
Program terminated with signal SIGSEGV, Segmentation fault.
The program no longer exists.