Bug 486500 - segfault when configuring pulseaudio to play over bluetooth
Summary: segfault when configuring pulseaudio to play over bluetooth
Keywords:
Status: CLOSED WONTFIX
Alias: None
Product: Fedora
Classification: Fedora
Component: pulseaudio
Version: 10
Hardware: All
OS: Linux
low
medium
Target Milestone: ---
Assignee: Lennart Poettering
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-02-20 01:29 UTC by Mike Bonnet
Modified: 2009-04-06 15:45 UTC (History)
2 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-04-03 16:11:55 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
debug-level syslog output from starting up pulseaudio and connecting a bluetooth audio output device via the bluetooth applet (12.25 KB, text/plain)
2009-04-06 14:56 UTC, Mike Bonnet
no flags Details

Description Mike Bonnet 2009-02-20 01:29:41 UTC
Description of problem:
Trying to play music from my T60 laptop to a Motorola DC800 audio gateway.  I am able to successfully pair to the device using the bluetooth applet.  Using the alsa device directly (either through "speaker-test -D bluetooth" or "mplayer -ao alsa:device=bluetooth") works great.

When I do "pactl load-module module-alsa-sink device=bluetooth", I get a segfault in module-alsa-sink.so.  Here's the end of the log and backtrace from running "pulseaudio --log-level debug" under gdb:

I: client.c: Created 1 "Native client (UNIX socket client)"
I: protocol-native.c: Got credentials: uid=500 gid=500 success=1
I: module-alsa-sink.c: Successfully opened device bluetooth.
I: module-alsa-sink.c: Successfully enabled mmap() mode.
I: module-alsa-sink.c: Successfully enabled timer-based scheduling mode.
I: (alsa-lib)control.c: Invalid CTL bluetooth
I: alsa-util.c: Unable to attach to mixer bluetooth: No such file or directory
I: sink.c: Created sink 1 "alsa_output.bluetooth" with sample spec s16le 2ch 44100Hz and channel map front-left,front-right
I: source.c: Created source 2 "alsa_output.bluetooth.monitor" with sample spec s16le 2ch 44100Hz and channel map front-left,front-right
I: module-alsa-sink.c: Using 3 fragments of size 8192 bytes, buffer time is 139.32ms
I: module-alsa-sink.c: Time scheduling watermark is 20.00ms
[New Thread 0x7fd2b97c2950 (LWP 2329)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fd2b97c2950 (LWP 2329)]
0x00007fd2bc62274f in thread_func (userdata=0x13aac10) at modules/module-alsa-sink.c:1123
1123	        if (PA_SINK_IS_OPENED(u->sink->thread_info.state)) {
(gdb) bt
#0  0x00007fd2bc62274f in thread_func (userdata=0x13aac10) at modules/module-alsa-sink.c:1123
#1  0x000000300388254d in internal_thread_func (userdata=0x13990a0) at pulsecore/thread-posix.c:72
#2  0x00000030018073da in start_thread (arg=<value optimized out>) at pthread_create.c:297
#3  0x0000003000ce62bd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
(gdb) 


I've stepped through the thread in gdb and it looks like u->sink is getting corrupted somewhere in the thread_func loop, but I can't figure out where.  It'll sometimes get through the loop successfully once, and then previously-valid pointers in the struct will be invalid or null.  The location of of the segv also moves around, but is often at PA_SINK_IS_OPENED().  If you'd like a core dump or more detailed info from gdb right before/after the segv, let me know.

I get this in /var/log/messages whenever I access the "bluetooth" alsa device, both successfully and unsuccessfully, so I don't think they're relevant:

Feb 19 19:23:58 maunalani bluetoothd[2269]: link_key_request (sba=00:19:7E:F2:0F:02, dba=00:07:A4:D6:27:B9)
Feb 19 19:24:07 maunalani bluetoothd[2269]: AVCTP connect(00:07:A4:D6:27:B9): Connection refused (111)
Feb 19 19:24:11 maunalani kernel: l2cap_recv_acldata: Unexpected continuation frame (len 0)
Feb 19 19:24:11 maunalani kernel: l2cap_recv_acldata: Unexpected continuation frame (len 0)
...



Version-Release number of selected component (if applicable):
Fully up-to-date F10 packages

pulseaudio-0.9.14-1.fc10.x86_64
bluez-alsa-4.22-2.fc10.x86_64

How reproducible:
Always

Steps to Reproduce:
1. pactl load-module module-alsa-sink device=bluetooth
2.
3.
  
Actual results:
segfault and silence

Expected results:
no segfault and dulcet tones emanating from my speakers

Additional info:
"pactl load-module module-alsa-source device=bluetooth" works fine.

It's possible this is a problem with bluez-alsa as well, but I stepped through the libasound_module_pcm_bluetooth.so module and couldn't find anywhere it even had access to the u->sink struct, so it looks more likely to be a pulseaudio issue.

Comment 1 Lennart Poettering 2009-04-03 16:11:55 UTC
Please the internal BT support in PA instead of going via ALSA.

Comment 2 Mike Bonnet 2009-04-03 16:48:01 UTC
Is there any documentation on using the native pulse bluetooth support?  I've paired with the BT audio device and have loaded module-bluetooth-discover, but I don't see a bluetooth output device in pavucontrol.

Comment 3 Lennart Poettering 2009-04-03 17:45:02 UTC
You have to connect the device. Very new gnome-bluetooth versions allow you to do this via the applet's context menu.

Comment 4 Mike Bonnet 2009-04-03 17:58:37 UTC
I've connected the device via the applet.  In /var/log/messages I see:

Apr  3 12:43:03 maunalani bluetoothd[2236]: Registered interface org.bluez.AudioSink on path /org/bluez/2236/hci0/dev_00_07_A4_D6_27_B9
Apr  3 12:43:03 maunalani bluetoothd[2236]: Registered interface org.bluez.Control on path /org/bluez/2236/hci0/dev_00_07_A4_D6_27_B9
Apr  3 12:43:03 maunalani bluetoothd[2236]: Registered interface org.bluez.Serial on path /org/bluez/2236/hci0/dev_00_07_A4_D6_27_B9

Is the problem that module-bluetooth-discover is looking for Headset instead of AudioSink?  If I load module-bluetooth-device manually, passing the address, I can get bluetooth audio working.

Comment 5 Lennart Poettering 2009-04-03 23:58:11 UTC
m-bt-d will make all *connected* headsets available. You might need to connect your headset via the gnome-bluetooth applet or via d-feet. And PA can deal with both Headset and AudioSink devices.

Comment 6 Mike Bonnet 2009-04-05 16:49:49 UTC
Yes, I've connected the AudioSink device via the applet, and it shows up in the preferences dialog for the applet.  But the device doesn't show up as an available audio output device in pavucontrol until I manually load the module-bluetooth-device module.  Is this a bug in module-bluetooth-discover?

Comment 7 Lennart Poettering 2009-04-06 14:26:44 UTC
Please set log-level to debug in /etc/pulse/daemon.conf. Then please try to reproduce this and paste the PA related syslog output here!

Comment 8 Mike Bonnet 2009-04-06 14:56:14 UTC
Created attachment 338342 [details]
debug-level syslog output from starting up pulseaudio and connecting a bluetooth audio output device via the bluetooth applet

Comment 9 Lennart Poettering 2009-04-06 15:33:16 UTC
Oh, sorry, I should have mentioned that audio support is only really available in F11 (i.e. current rawhide). Bluetooth audio before that generally doesn't work, neither inside nor outside of PA.

Comment 10 Mike Bonnet 2009-04-06 15:45:44 UTC
Ok, thanks for your help anyway.  I'll try again after F11 is released.  Looking forward to having this working!


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