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.