Bluez 5.71 bluetoothd coredump on a2dp suspend
Description:
Connecting to a voice call with a Bluetooth headset that triggers wireplumber to switch the bluetooth profile from a2dp -> hsp/hfp causes a coredump in bluetoothd, disconnecting the bluetooth headset instead.
Observed with Bose QuietComfort 35 I headphones.
Does not reproduce after downgrading bluez / bluez-libs / bluez-utils 5.71-1 -> 5.70-2.
Additional info:
Utilizing debuginfod, here is the bt:
$ cat gdb.txt
#0 0x000055e93dbc8785 in a2dp_suspend_complete (session=<optimized out>, err=0, user_data=0x55e93e432520) at profiles/audio/transport.c:431
#1 0x000055e93dbb97ea in finalize_suspend (data=data@entry=0x55e93e435880) at profiles/audio/a2dp.c:376
#2 0x000055e93dbb98c0 in suspend_cfm (session=0x55e93e4317b0, sep=<optimized out>, stream=<optimized out>, err=0x0, user_data=0x55e93e41e850) at profiles/audio/a2dp.c:1276
#3 0x000055e93dbbfa4b in avdtp_suspend_resp (data=0x55e93e431823, size=<optimized out>, stream=0x55e93e433e60, session=0x55e93e4317b0) at profiles/audio/avdtp.c:2900
#4 avdtp_parse_resp (transaction=<optimized out>, size=<optimized out>, buf=0x55e93e431823, signal_id=<optimized out>, stream=0x55e93e433e60, session=0x55e93e4317b0) at profiles/audio/avdtp.c:2985
#5 session_cb (chan=<optimized out>, cond=<optimized out>, data=0x55e93e4317b0) at profiles/audio/avdtp.c:2286
#6 0x00007f5e225b9f69 in g_main_dispatch (context=0x55e93e3c6800) at ../glib/glib/gmain.c:3476
#7 0x00007f5e22618367 in g_main_context_dispatch_unlocked (context=0x55e93e3c6800) at ../glib/glib/gmain.c:4284
#8 g_main_context_iterate_unlocked.isra.0 (context=0x55e93e3c6800, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/glib/gmain.c:4349
#9 0x00007f5e225bab97 in g_main_loop_run (loop=0x55e93e3c69e0) at ../glib/glib/gmain.c:4551
#10 0x000055e93dbafe42 in mainloop_run () at src/shared/mainloop-glib.c:66
#11 mainloop_run_with_signal (func=<optimized out>, user_data=0x0) at src/shared/mainloop-notify.c:188
#12 main (argc=<optimized out>, argv=<optimized out>) at src/main.c:1452
- package version(s):
$ pacman -Qqs bluez | pacman -Q pipewire wireplumber -
pipewire 1:1.0.0-2
wireplumber 0.4.17-1
bluez 5.71-1
bluez-libs 5.71-1
bluez-utils 5.71-1
- config and/or log files:
$ grep -Ev '^(#|$)' /etc/bluetooth/main.conf # unmodified
[General]
[BR]
[LE]
[GATT]
[CSIS]
[AVDTP]
[Policy]
[AdvMon]
Steps to reproduce:
- Connect bluetooth headset with A2DP profile
- Connect to a Discord voice channel, triggering wireplumber to change the bluetooth profile
- Headset is disconnected instead, bluetoothd coredumps