Bug 94958 - BlueZ5 module fails to clean out card after headset disconnects
Summary: BlueZ5 module fails to clean out card after headset disconnects
Status: RESOLVED FIXED
Alias: None
Product: PulseAudio
Classification: Unclassified
Component: modules (show other bugs)
Version: unspecified
Hardware: All Linux (All)
: medium normal
Assignee: pulseaudio-bugs
QA Contact: pulseaudio-bugs
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-04-16 00:39 UTC by juha.kuikka
Modified: 2016-11-28 11:24 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
Patch to fix the issue (2.32 KB, text/plain)
2016-04-16 00:39 UTC, juha.kuikka
Details

Description juha.kuikka 2016-04-16 00:39:04 UTC
Created attachment 122981 [details]
Patch to fix the issue

SW: Pulseaudio 8.0 / BlueZ 5.39

Symptoms:
While disconnecting/reconnecting a paired bluetooth headset (LG HBS750) audio fails roughly on every other connection.

On a failed connection "pactl list cards" shows the bluetooth device's card but "Active Profile: off". Issuing "pacmd set-card-profile X a2dp_sink" makes audio work immediately.

I realized that when this happened, the previous disconnection did not remove the card, instead it was only configured for "Active Profile: off" but otherwise left in place.

Upon looking at PA debug logs I saw that the transport for the a2dp_sink was first set into disconnected state and then into idle state. In "device_connection_changed_cb()" this causes the "pa_bluetooth_device_any_transport_connected()" return true and the module-bluez5-device is not unloaded.

Further investigation shows that this is caused by a race of module-bluez5-device.c:thread_func() and MediaPoint1::ClearConfiguration():

When the FD in thread_func() is closed (POLLHUP) an BLUETOOTH_MESSAGE_STREAM_FD_HUP message is sent into the main thread. The handler of this message unconditionally sets the transport into IDLE state. This is a problem if it has already been set into DISCONNECTED state.

See attached patch for a fix.
Comment 1 Tanu Kaskinen 2016-11-28 11:24:17 UTC
Thanks a lot for investigating and fixing this! I applied the patch now. I'm sorry it took so long, I have a bunch of old bugmail that I didn't have time to read at the time, and I'm now catching up on them.


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.