Bug 375891 - pulseaudio does crash on start
Summary: pulseaudio does crash on start
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: pulseaudio
Version: 8
Hardware: x86_64
OS: Linux
low
high
Target Milestone: ---
Assignee: Lennart Poettering
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2007-11-11 13:41 UTC by Gert Vervoort
Modified: 2007-11-30 22:12 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2007-11-12 14:08:16 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Gert Vervoort 2007-11-11 13:41:51 UTC
Description of problem:

The pulsaudio component crashes when started with following error message
(copy/pasted from .xsession-errors):

SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/4040,unix/unix:/tmp/.ICE-unix/4040
pulseaudio: pulsecore/mutex-posix.c:98: pa_mutex_unlock: Assertion `pthread_mute
x_unlock(&m->mutex) == 0' failed.

** (gnome-session:4040): WARNING **: Failed to start sound.




Version-Release number of selected component (if applicable):

[gert@apollo ~]$ yum list | grep installed | grep pulseaudio
alsa-plugins-pulseaudio.x86_64           1.0.14-5.fc8           installed       
pulseaudio.x86_64                        0.9.7-0.17.svn20071017 installed       
pulseaudio-core-libs.x86_64              0.9.7-0.17.svn20071017 installed       
pulseaudio-esound-compat.x86_64          0.9.7-0.17.svn20071017 installed       
pulseaudio-libs.x86_64                   0.9.7-0.17.svn20071017 installed       
pulseaudio-utils.x86_64                  0.9.7-0.17.svn20071017 installed       
[gert@apollo ~]$ 


How reproducible:

Always


Steps to Reproduce:
1. Login as a user via gdm
2. cat .xsession-errors
3.

  
Actual results:

Error message in .xsession-errors
And no sound apps using pulseaudio


Expected results:

No error message in .xsession-errors
And sound in apps using pulseaudio


Additional info:

-

Comment 1 Gert Vervoort 2007-11-11 13:43:03 UTC
Some problem occurs when trying to start pulseaudio manually:

[gert@apollo ~]$ pulseaudio 
pulseaudio: pulsecore/mutex-posix.c:98: pa_mutex_unlock: Assertion
`pthread_mutex_unlock(&m->mutex) == 0' failed.
Aborted
[gert@apollo ~]$ 


Comment 2 Lennart Poettering 2007-11-11 16:15:46 UTC
This is most likely a bug in libltdl. Could you please tell me which version of
libltdl you have installed?

Comment 3 Lennart Poettering 2007-11-11 16:17:20 UTC
Or to be more exact: 1.5.22 i broken. 1.5.24 is fine.

Comment 4 Gert Vervoort 2007-11-11 16:22:54 UTC
Version 1.5.24:

[gert@apollo tmp]$ yum list | grep installed | grep ltdl 
libtool-ltdl.x86_64                      1.5.24-3.fc8           installed       
[gert@apollo tmp]$ 



Comment 5 Lennart Poettering 2007-11-11 16:37:59 UTC
Uh. and with that version you say the problem persists?

Hmm, could you please provide me with the full output of pulseaudio -vv and even
better a strack trace with debugging symbols when this happens?

Comment 6 Gert Vervoort 2007-11-11 17:37:54 UTC
Yes, that is the version I had installed on my system when noticing the problem

pulseaudio -vv does not give anymore information:

[gert@apollo tmp]$ pulseaudio -vv
pulseaudio: pulsecore/mutex-posix.c:98: pa_mutex_unlock: Assertion
`pthread_mutex_unlock(&m->mutex) == 0' failed.
Aborted
[gert@apollo tmp]$ 

After installing the debuginfo packages for pulseaudio and the used libraries, I
get the following stacktrace using gdb:

[gert@apollo ~]$ gdb /usr/bin/pulseaudio 
GNU gdb Red Hat Linux (6.6-35.fc8rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu"...
Using host libthread_db library "/lib64/libthread_db.so.1".
(gdb) r
Starting program: /usr/bin/pulseaudio 
[Thread debugging using libthread_db enabled]
[New process 8125]
[New process 8125]
pulseaudio: pulsecore/mutex-posix.c:98: pa_mutex_unlock: Assertion
`pthread_mutex_unlock(&m->mutex) == 0' failed.

Program received signal SIGABRT, Aborted.
0x0000003b83830ec5 in *__GI_raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64        return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
(gdb) bt
#0  0x0000003b83830ec5 in *__GI_raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x0000003b83832970 in *__GI_abort () at abort.c:88
#2  0x0000003b8382a11f in *__GI___assert_fail (
    assertion=0x2b94a4190ee8 "pthread_mutex_unlock(&m->mutex) == 0", 
    file=0x2b94a4190e09 "pulsecore/mutex-posix.c", line=98, 
    function=0x2b94a41910c0 "pa_mutex_unlock") at assert.c:78
#3  0x00002b94a41804c5 in ?? ()
#4  0x0000000000000000 in ?? ()
(gdb) 





Comment 7 Lennart Poettering 2007-11-11 17:48:41 UTC
Hmm, that backtrace doesn't really help. :-( Could you please do a full back
trace over all threads?

Comment 8 Gert Vervoort 2007-11-11 18:05:42 UTC
A full backtrace:

[gert@apollo ~]$ gdb /usr/bin/pulseaudio 
GNU gdb Red Hat Linux (6.6-35.fc8rh)
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu"...
Using host libthread_db library "/lib64/libthread_db.so.1".
(gdb) r
Starting program: /usr/bin/pulseaudio 
[Thread debugging using libthread_db enabled]
[New process 8462]
[New process 8462]
pulseaudio: pulsecore/mutex-posix.c:98: pa_mutex_unlock: Assertion
`pthread_mutex_unlock(&m->mutex) == 0' failed.

Program received signal SIGABRT, Aborted.
0x0000003b83830ec5 in *__GI_raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64        return INLINE_SYSCALL (tgkill, 3, pid, selftid, sig);
(gdb) bt full
#0  0x0000003b83830ec5 in *__GI_raise (sig=<value optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
        pid = <value optimized out>
        selftid = 0
#1  0x0000003b83832970 in *__GI_abort () at abort.c:88
        act = {__sigaction_handler = {sa_handler = 0x1ec01, 
    sa_sigaction = 0x1ec01}, sa_mask = {__val = {255612758488, 0, 
      255612758408, 140735872757264, 47073025957385, 140735872757504, 
      255609672507, 206158430232, 6349824, 255612758400, 125952, 255610466288, 
      6350384, 125392, 255609742718, 6349952}}, sa_flags = 1853185912, 
  sa_restorer = 0x7fff9fb408c5}
        sigs = {__val = {32, 0 <repeats 15 times>}}
#2  0x0000003b8382a11f in *__GI___assert_fail (
    assertion=0x2ad00afd9ee8 "pthread_mutex_unlock(&m->mutex) == 0", 
    file=0x2ad00afd9e09 "pulsecore/mutex-posix.c", line=98, 
    function=0x2ad00afda0c0 "pa_mutex_unlock") at assert.c:78
        buf = 0x60e5c0 "pulseaudio: pulsecore/mutex-posix.c:98: pa_mutex_unlock:
Assertion `pthread_mutex_unlock(&m->mutex) == 0' failed.\n"
        errstr = "Unexpected error.\n"
#3  0x00002ad00afc94c5 in ?? ()
No symbol table info available.
#4  0x0000000000000000 in ?? ()
No symbol table info available.
(gdb) 

Also it still seems to be missing symbol information, but as far as I know I
have installed debuginfo for all libraries it links to:

alsa-lib-debuginfo.x86_64                1.0.15-1.fc8           installed       
dbus-debuginfo.x86_64                    1.1.2-7.fc8            installed       
glibc-debuginfo.x86_64                   2.7-2                  installed       
libcap-debuginfo.x86_64                  1.10-30                installed       
liboil-debuginfo.x86_64                  0.3.12-11.fc8          installed       
libsamplerate-debuginfo.x86_64           0.1.2-7.fc8            installed       
libsndfile-debuginfo.x86_64              1.0.17-2.fc8           installed       
libtool-debuginfo.x86_64                 1.5.24-3.fc8           installed       
pulseaudio-debuginfo.x86_64              0.9.7-0.17.svn20071017 installed       


Comment 9 Gert Vervoort 2007-11-11 18:37:31 UTC
I found the problem, there was an old version libltdl of in /usr/local/lib64 :-( 

[gert@apollo tmp]$ ldd /usr/bin/pulseaudio 
        linux-vdso.so.1 =>  (0x00007fff6a9fe000)
        libpulsecore.so.4 => /usr/lib64/libpulsecore.so.4 (0x00002aaaaaac9000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003b84400000)
        libltdl.so.3 => /usr/local/lib64/libltdl.so.3 (0x00002aaaaad28000)
        libsamplerate.so.0 => /usr/lib64/libsamplerate.so.0 (0x00002aaaaae30000)
        libsndfile.so.1 => /usr/lib64/libsndfile.so.1 (0x0000003b82a00000)
        liboil-0.3.so.0 => /usr/lib64/liboil-0.3.so.0 (0x0000003b82e00000)
        libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x0000003b8d200000)
        libcap.so.1 => /lib64/libcap.so.1 (0x0000003b8ce00000)
        librt.so.1 => /lib64/librt.so.1 (0x0000003b86800000)
        libdl.so.2 => /lib64/libdl.so.2 (0x0000003b84000000)
        libm.so.6 => /lib64/libm.so.6 (0x0000003b83c00000)
        libc.so.6 => /lib64/libc.so.6 (0x0000003b83800000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003b82600000)
[gert@apollo tmp]$ 

rm /usr/local/lib64/libltdl* solves the problem.

Now pulseaudio starts:

[gert@apollo tmp]$ pulseaudio 
W: alsa-util.c: Device hw:1 doesn't support 2 channels, changed to 1.
W: alsa-util.c: Cannot find mixer control "Capture".




Comment 10 Lennart Poettering 2007-11-12 14:08:16 UTC
Closing this bug as notabug, then.


Note You need to log in before you can comment on or make changes to this bug.