Segmentation fault when loading module-card-restore with the 'restore_bluetooth_profile=true' parameter
When using the restore_bluetooth_profile=true
parameter for module-card-restore, according to the note here, I'm receiving a segfault error:
Job for pulseaudio.service failed because a fatal signal was delivered causing the control process to dump core.
See "systemctl --user status pulseaudio.service" and "journalctl --user -xe" for details.
systemctl --user status pulseaudio
shows:
Process 2400885 (pulseaudio) of user 1000 dumped core. Stack trace of thread 2400885: #0 0x00007f6b926f44aa __GI___strcmp_ssse3 (libc.so.6) #1 0x00007f6b9255f1e2 n/a (libpulsecore-13.0.so) #2 0x00007f6b9255f68f n/a (libpulsecore-13.0.so) #3 0x00007f6b92562523 pa_modargs_new (libpulsecore-13.0.so) #4 0x00007f6b8d0cbbd7 module_card_restore_LTX_pa__init (module-card-restore.so) #5 0x00007f6b925671a6 pa_module_load (libpulsecore-13.0.so) #6 0x00007f6b9257870f n/a (libpulsecore-13.0.so) #7 0x00007f6b92571efd pa_cli_command_execute_line_stateful (libpulsecore-13.0.so) #8 0x00007f6b925728a4 pa_cli_command_execute_file_stream (libpulsecore-13.0.so) #9 0x00007f6b92572a49 pa_cli_command_execute_file (libpulsecore-13.0.so) #10 0x00007f6b92572290 pa_cli_command_execute_line_stateful (libpulsecore-13.0.so) #11 0x00007f6b925728a4 pa_cli_command_execute_file_stream (libpulsecore-13.0.so) #12 0x000055d0cd3cdad3 main (pulseaudio) #13 0x00007f6b925df153 __libc_start_main (libc.so.6) #14 0x000055d0cd3ce9ee n/a (pulseaudio)
journalctl --user-unit pulseaudio -x -n 100
displays the stack traces for two additional threads (logged by 'systemd-coredump'), but they are less relevant.
Running (gdb) bt full
on the core dump file with a debug enabled build of pulseaudio
and glibc
shows these function calls (relevant calls only):
#0 __strcmp_ssse3 () at ../sysdeps/x86_64/multiarch/../strcmp.S:173 No locals. #1 0x00007fc4d38d9f67 in add_key_value (ma=0x55a276e12190, key=0x55a276e12560 "restore_bluetooth_profile", value=0x55a276d91a00 "true", valid_keys=0x7fc4ce467bd0 <valid_modargs>, ignore_dupes=false) at ../pulseaudio/src/pulsecore/modargs.c:70 v = 0x7fc4ce467bd8 e = 0x0 raw = 0x55a276e13980 "" __PRETTY_FUNCTION__ = "add_key_value" __func__ = "add_key_value" #2 0x00007fc4d38da5ef in parse (ma=0x55a276e12190, args=0x55a276e12590 "restore_bluetooth_profile=true", valid_keys=0x7fc4ce467bd0 <valid_modargs>, ignore_dupes=false) at ../pulseaudio/src/pulsecore/modargs.c:251 state = VALUE_SIMPLE p = 0x55a276e125ae "" key = 0x55a276e12590 "restore_bluetooth_profile=true" value = 0x55a276e125aa "true" key_len = 25 value_len = 4 #3 0x00007fc4d38da6bf in pa_modargs_new (args=0x55a276e12590 "restore_bluetooth_profile=true", valid_keys=0x7fc4ce467bd0 <valid_modargs>) at ../pulseaudio/src/pulsecore/modargs.c:267 ma = 0x55a276e12190 #4 0x00007fc4ce46476b in module_card_restore_LTX_pa__init (m=0x55a276da4bf0) at ../pulseaudio/src/modules/module-card-restore.c:624 ma = 0x0 u = 0x0 fname = 0x7fff49223660 "\260\066\"I\377\177" restore_bluetooth_profile = false __PRETTY_FUNCTION__ = "module_card_restore_LTX_pa__init" __func__ = "module_card_restore_LTX_pa__init" #5 0x00007fc4d38dcb1c in pa_module_load (module=0x7fff49223698, c=0x55a276d96b50, name=0x55a276d8f6b0 "module-card-restore", argument=0x55a276e105d0 "restore_bluetooth_profile=true") at ../pulseaudio/src/pulsecore/module.c:189 m = 0x55a276da4bf0 load_once = 0x7fc4ce4624fb <module_card_restore_LTX_pa__load_once> get_deprecated = 0x0 mi = 0x1 errcode = 21922 __PRETTY_FUNCTION__ = "pa_module_load" __func__ = "pa_module_load" #6 0x00007fc4d38c041d in pa_cli_command_load (c=0x55a276d96b50, t=0x55a276da4e30, buf=0x55a276d8f970, fail=0x55a276d8e025) at ../pulseaudio/src/pulsecore/cli-command.c:437 name = 0x55a276d8f6b0 "module-card-restore" err = 32767 m = 0x0 __PRETTY_FUNCTION__ = "pa_cli_command_load" __func__ = "pa_cli_command_load"
I tried the following variations and the result is the same:
module-card-restore restore_bluetooth_profile=yes
module-card-restore restore_bluetooth_profile=1
module-card-restore restore_bluetooth_profile=false
module-card-restore restore_bluetooth_profile=0
module-card-restore restore_bluetooth_profile=no
Will submit a merge request.