I have a Marmitek BoomBoom 540 bluetooth headset.
I connected it with the hsp profile and setup the microphone to be the 
preferred recording device in KDE sound settings. Then I switched the profile 
to a2dp for high-quality audio. When the Bluetooth microphone is unavailable 
KDE falls back to the integrated one in the laptop.
When I fire a recording application it's playing through the Bluetooth headset 
while using the integrated laptop microphone. When I switch the profile from 
a2dp to hsp the bluetooth microphone gets re-registered and KDE switches 
automatically to the preferred device and that's where the assertion failed 
message pops and pulseaudio stops. I can switch to hsp before running a 
recording application and after launching it, it's using the headset 
microphone without issues. I can switch from hsp to a2dp in that case and it 
switches to the laptop mic as expected, but reverting from a2dp back to hsp 
aborts the daemon again.
I'm attaching a backtrace as per instructions from
http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Community/
If there's something I'm missing please tell me so I can provide more 
information.
Thank you for your time!

Kind regards,
Iskren.


On Friday 24 January 2014 23:13:48 Tanu Kaskinen wrote:
> On Fri, 2014-01-24 at 15:51 +0200, Iskren Hadzhinedev wrote:
> > Hello everyone!
> > I have an issue with Pulseaudio 4.0 and a bluetooth headset.
> > Whenever I change the profile from a2dp to hsp while a program is using
> > the
> > microphone, pulseaudio aborts with the following message:
> > 
> > [pulseaudio] source.c: Assertion 'PA_SOURCE_IS_LINKED(s->state)' failed at
> > pulsecore/source.c:734, function pa_source_update_status(). Aborting.
> > 
> > If microphone is not used profiles change without any issues.
> > 
> > Tried with skype, viber and `parec | pacat' - same result in each case.
> 
> Does just "parec --device=name_of_the_microphone_source > /dev/null" do
> the trick too?
> 
> > Is there a way to fix this? Thanks in advance.
> 
> If you could provide a backtrace with gdb, that would be useful.
> 
> What microphone do you mean? You said that the bluetooth card profile is
> initially a2dp and then you switch to hsp. Since you can't use the
> headset microphone in the a2dp mode, you're apparently talking about
> some other microphone.
Starting program: /usr/bin/pulseaudio -vvvvv
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffedac2700 (LWP 23073)]
[New Thread 0x7fffed2c1700 (LWP 23074)]
[New Thread 0x7fffecac0700 (LWP 23075)]
[New Thread 0x7fffdd758700 (LWP 23234)]
[Thread 0x7fffdd758700 (LWP 23234) exited]
[New Thread 0x7fffdd758700 (LWP 23373)]

Program received signal SIGABRT, Aborted.
0x00007ffff3497dd9 in raise () from /lib64/libc.so.6

Thread 6 (Thread 0x7fffdd758700 (LWP 23373)):
#0  0x00007ffff3550b5f in ppoll () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff7b7b5e0 in ppoll (__ss=0x0, __timeout=<optimized out>, __nfds=<optimized out>, 
    __fds=<optimized out>) at /usr/include/bits/poll2.h:77
No locals.
#2  pa_rtpoll_run (p=0x7c23b0, wait_op=wait_op@entry=true) at pulsecore/rtpoll.c:314
        ts = {tv_sec = 0, tv_nsec = 2878000}
        i = <optimized out>
        r = 0
        timeout = {tv_sec = 0, tv_usec = 2878}
        __func__ = "pa_rtpoll_run"
        __PRETTY_FUNCTION__ = "pa_rtpoll_run"
#3  0x00007fffdd9711ab in thread_func (userdata=0x6b3bf0) at modules/bluetooth/module-bluetooth-device.c:1152
        pollfd = 0x7c27d0
        ret = <optimized out>
        disable_timer = <optimized out>
        u = 0x6b3bf0
        do_write = <optimized out>
        pending_read_bytes = 0
        writable = true
        __func__ = "thread_func"
        __PRETTY_FUNCTION__ = "thread_func"
#4  0x00007ffff715e3a8 in internal_thread_func (userdata=0x7a6a50) at pulsecore/thread-posix.c:83
        t = 0x7a6a50
#5  0x00007ffff3f3fce2 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#6  0x00007ffff355aabd in clone () from /lib64/libc.so.6
No symbol table info available.

Thread 4 (Thread 0x7fffecac0700 (LWP 23075)):
#0  0x00007ffff3550b5f in ppoll () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff7b7b5e0 in ppoll (__ss=0x0, __timeout=<optimized out>, __nfds=<optimized out>, 
    __fds=<optimized out>) at /usr/include/bits/poll2.h:77
No locals.
#2  pa_rtpoll_run (p=0x6ce4e0, wait_op=wait_op@entry=true) at pulsecore/rtpoll.c:314
        ts = {tv_sec = 1, tv_nsec = 979607000}
        i = <optimized out>
        r = 0
        timeout = {tv_sec = 1, tv_usec = 979607}
        __func__ = "pa_rtpoll_run"
        __PRETTY_FUNCTION__ = "pa_rtpoll_run"
#3  0x00007fffedde5b8d in thread_func (userdata=0x6d9fa0) at modules/alsa/alsa-source.c:1527
        ret = <optimized out>
        rtpoll_sleep = 1979628
        real_sleep = 57721669812
        u = 0x6d9fa0
        revents = 0
        __func__ = "thread_func"
        __PRETTY_FUNCTION__ = "thread_func"
#4  0x00007ffff715e3a8 in internal_thread_func (userdata=0x75ada0) at pulsecore/thread-posix.c:83
        t = 0x75ada0
#5  0x00007ffff3f3fce2 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#6  0x00007ffff355aabd in clone () from /lib64/libc.so.6
No symbol table info available.

Thread 3 (Thread 0x7fffed2c1700 (LWP 23074)):
#0  0x00007ffff3550b5f in ppoll () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff7b7b5e0 in ppoll (__ss=0x0, __timeout=<optimized out>, __nfds=<optimized out>, 
    __fds=<optimized out>) at /usr/include/bits/poll2.h:77
No locals.
#2  pa_rtpoll_run (p=0x6b7ae0, wait_op=wait_op@entry=true) at pulsecore/rtpoll.c:314
        ts = {tv_sec = 0, tv_nsec = 0}
        i = <optimized out>
        r = 0
        timeout = {tv_sec = 0, tv_usec = 0}
        __func__ = "pa_rtpoll_run"
        __PRETTY_FUNCTION__ = "pa_rtpoll_run"
#3  0x00007fffedddf883 in thread_func (userdata=0x6b8040) at modules/alsa/alsa-sink.c:1816
        ret = <optimized out>
        rtpoll_sleep = 0
        real_sleep = <optimized out>
        u = 0x6b8040
        revents = 0
        __func__ = "thread_func"
        __PRETTY_FUNCTION__ = "thread_func"
#4  0x00007ffff715e3a8 in internal_thread_func (userdata=0x6e20b0) at pulsecore/thread-posix.c:83
        t = 0x6e20b0
#5  0x00007ffff3f3fce2 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#6  0x00007ffff355aabd in clone () from /lib64/libc.so.6
No symbol table info available.

Thread 2 (Thread 0x7fffedac2700 (LWP 23073)):
#0  0x00007ffff3550b5f in ppoll () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff7b7b5e0 in ppoll (__ss=0x0, __timeout=<optimized out>, __nfds=<optimized out>, 
    __fds=<optimized out>) at /usr/include/bits/poll2.h:77
No locals.
#2  pa_rtpoll_run (p=0x694dd0, wait_op=wait_op@entry=true) at pulsecore/rtpoll.c:314
        ts = {tv_sec = 0, tv_nsec = 0}
        i = <optimized out>
        r = 0
        timeout = {tv_sec = 0, tv_usec = 0}
        __func__ = "pa_rtpoll_run"
        __PRETTY_FUNCTION__ = "pa_rtpoll_run"
#3  0x00007fffedddf883 in thread_func (userdata=0x693e50) at modules/alsa/alsa-sink.c:1816
        ret = <optimized out>
        rtpoll_sleep = 0
        real_sleep = <optimized out>
        u = 0x693e50
        revents = 0
        __func__ = "thread_func"
        __PRETTY_FUNCTION__ = "thread_func"
#4  0x00007ffff715e3a8 in internal_thread_func (userdata=0x6eb640) at pulsecore/thread-posix.c:83
        t = 0x6eb640
#5  0x00007ffff3f3fce2 in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#6  0x00007ffff355aabd in clone () from /lib64/libc.so.6
No symbol table info available.

Thread 1 (Thread 0x7ffff7fa3780 (LWP 23069)):
#0  0x00007ffff3497dd9 in raise () from /lib64/libc.so.6
No symbol table info available.
#1  0x00007ffff34994e8 in abort () from /lib64/libc.so.6
No symbol table info available.
#2  0x00007ffff7ba6402 in pa_source_update_status (s=s@entry=0x7b7ac0) at pulsecore/source.c:734
        __func__ = "pa_source_update_status"
        __PRETTY_FUNCTION__ = "pa_source_update_status"
#3  0x00007ffff7b9f8ec in pa_source_output_finish_move (o=o@entry=0x7dcc50, dest=dest@entry=0x7b7ac0, 
    save=save@entry=false) at pulsecore/source-output.c:1462
        __func__ = "pa_source_output_finish_move"
        __PRETTY_FUNCTION__ = "pa_source_output_finish_move"
#4  0x00007ffff7b9fce0 in pa_source_output_move_to (o=0x7dcc50, dest=0x7b7ac0, save=<optimized out>)
    at pulsecore/source-output.c:1521
        r = 0
        __func__ = "pa_source_output_move_to"
        __PRETTY_FUNCTION__ = "pa_source_output_move_to"
#5  0x00007fffddb7d70b in route_source_outputs (u=0x6b12a0, ignore_source=<optimized out>)
    at modules/module-device-manager.c:748
        so = <optimized out>
        idx = 0
#6  0x00007ffff7b70f8c in pa_hook_fire (hook=0x6475e0, data=0x7c8b40) at pulsecore/hook-list.c:106
        slot = 0x6afe70
        next = <optimized out>
        result = PA_HOOK_OK
        __func__ = "pa_hook_fire"
        __PRETTY_FUNCTION__ = "pa_hook_fire"
#7  0x00007ffff7ba352f in pa_source_put (s=<optimized out>) at pulsecore/source.c:604
        __func__ = "pa_source_put"
        __PRETTY_FUNCTION__ = "pa_source_put"
#8  0x00007ffff7b8ee3e in pa_sink_put (s=0x7bee00) at pulsecore/sink.c:659
        __func__ = "pa_sink_put"
        __PRETTY_FUNCTION__ = "pa_sink_put"
#9  0x00007fffdd973cfa in start_thread (u=u@entry=0x6b3bf0) at modules/bluetooth/module-bluetooth-device.c:1987
        __func__ = "start_thread"
        __PRETTY_FUNCTION__ = "start_thread"
#10 0x00007fffdd974075 in card_set_profile (c=<optimized out>, new_profile=0x7ab3a0)
    at modules/bluetooth/module-bluetooth-device.c:2057
        u = 0x6b3bf0
        d = 0x7ab3d0
        __func__ = "card_set_profile"
        __PRETTY_FUNCTION__ = "card_set_profile"
#11 0x00007ffff7b6cc43 in pa_card_set_profile (c=0x7b8ed0, name=<optimized out>, save=save@entry=true)
    at pulsecore/card.c:275
        profile = 0x7ab3a0
        r = <optimized out>
        __func__ = "pa_card_set_profile"
        __PRETTY_FUNCTION__ = "pa_card_set_profile"
#12 0x00007fffeee43578 in command_set_card_profile (pd=<optimized out>, command=<optimized out>, tag=2, 
    t=0x7e6040, userdata=0x7dba50) at pulsecore/protocol-native.c:4703
        idx = 4294967295
        name = 0x7e3ba8 "bluez_card.00_1D_43_00_06_15"
        profile = 0x7e3bc6 "hsp"
        card = <optimized out>
        ret = <optimized out>
        __func__ = "command_set_card_profile"
        __PRETTY_FUNCTION__ = "command_set_card_profile"
#13 0x00007ffff714b28d in pa_pdispatch_run (pd=0x7e4bb0, packet=packet@entry=0x7e3b80, 
    creds=creds@entry=0x7e3a00, userdata=userdata@entry=0x7dba50) at pulsecore/pdispatch.c:336
        cb = <optimized out>
        tag = 2
        command = 90
        ts = 0x7e6040
        ret = -1
        __func__ = "pa_pdispatch_run"
        __PRETTY_FUNCTION__ = "pa_pdispatch_run"
#14 0x00007fffeee4bd10 in pstream_packet_callback (p=0x7e37d0, packet=<optimized out>, creds=<optimized out>, 
    userdata=0x7dba50) at pulsecore/protocol-native.c:4817
        __func__ = "pstream_packet_callback"
        __PRETTY_FUNCTION__ = "pstream_packet_callback"
#15 0x00007ffff714f0ec in do_read (p=0x7e37d0) at pulsecore/pstream.c:827
        release_memblock = 0x0
        d = <optimized out>
        l = <optimized out>
        r = <optimized out>
#16 do_pstream_read_write (p=0x7e37d0) at pulsecore/pstream.c:185
        __func__ = "do_pstream_read_write"
        __PRETTY_FUNCTION__ = "do_pstream_read_write"
#17 0x00007ffff73a33bc in dispatch_pollfds (m=0x643190) at pulse/mainloop.c:657
        e = 0x7df610
        k = 1
        r = 0
#18 pa_mainloop_dispatch (m=m@entry=0x643190) at pulse/mainloop.c:904
        dispatched = 0
        __func__ = "pa_mainloop_dispatch"
        __PRETTY_FUNCTION__ = "pa_mainloop_dispatch"
#19 0x00007ffff73a37aa in pa_mainloop_iterate (m=m@entry=0x643190, block=block@entry=1, 
    retval=retval@entry=0x7fffffffdb08) at pulse/mainloop.c:935
        r = <optimized out>
        __func__ = "pa_mainloop_iterate"
        __PRETTY_FUNCTION__ = "pa_mainloop_iterate"
#20 0x00007ffff73a3850 in pa_mainloop_run (m=m@entry=0x643190, retval=retval@entry=0x7fffffffdb08)
    at pulse/mainloop.c:950
        r = <optimized out>
#21 0x000000000040732b in main (argc=<optimized out>, argv=<optimized out>) at daemon/main.c:1137
        c = 0x6472d0
        buf = <optimized out>
        conf = 0x63e3e0
        mainloop = 0x643190
        s = <optimized out>
        configured_address = 0x6472d0 "\001"
        r = <optimized out>
        retval = 0
        d = 2
        valid_pid_file = true
        ltdl_init = true
        passed_fd = <optimized out>
        e = <optimized out>
        daemon_pipe = {-1, -1}
        daemon_pipe2 = {-1, -1}
        autospawn_fd = -1
        autospawn_locked = false
        server_lookup = 0x67b810
        lookup_service_bus = 0x68dd60
        server_bus = 0x68dd60
        start_server = <optimized out>
        __func__ = "main"
        __PRETTY_FUNCTION__ = "main"
A debugging session is active.

	Inferior 1 [process 23069] will be killed.

Quit anyway? (y or n) 
_______________________________________________
pulseaudio-discuss mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss

Reply via email to