Bug 492952

Summary: System Settings segfaults in PulseAudioQt::ContextPrivate::~ContextPrivate() when closing app after opening sound page
Product: [Applications] systemsettings Reporter: triallax
Component: kcm_pulseaudioAssignee: Plasma Bugs List <plasma-bugs-null>
Status: REPORTED ---    
Severity: crash CC: nate, sitter
Priority: NOR    
Version First Reported In: 6.1.4   
Target Milestone: ---   
Platform: Other   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description triallax 2024-09-10 15:36:34 UTC
SUMMARY
Plasma's system settings app segfaults on quitting after opening the Sound tab.

STEPS TO REPRODUCE
1. Run `systemsettings` from the terminal
2. Press on "Sound" in the sidebar
3. Press the close button in the title bar to close the app

OBSERVED RESULT
The app segfaults.

EXPECTED RESULT
The app closes gracefully.

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Chimera Linux
KDE Plasma Version: 6.1.4
KDE Frameworks Version: 6.5.0
Qt Version: 6.7.2

ADDITIONAL INFORMATION
I'm using PipeWire and its pulseaudio compatibility layer, if that's relevant.

Here's the crash backtrace:
* thread #1, name = 'systemsettings', stop reason = signal SIGSEGV: address not mapped to object
  * frame #0: 0x0000792788103a40 libKF6PulseAudioQt.so.5`PulseAudioQt::Server::updateDefaultDevices(this=0x00007927a91d6320) at server.cpp:118:56
    frame #1: 0x00007927a42de3d5 libQt6Core.so.6`void doActivate<false>(QObject*, int, void**) [inlined] QtPrivate::QSlotObjectBase::call(this=0x00007927a91d6720, r=0x00007927a91d6320, a=0x00007ffc97362c40) at qobjectdefs_impl.h:469:51
    frame #2: 0x00007927a42de3bd libQt6Core.so.6`void doActivate<false>(sender=0x0000792786d99788, signal_index=6, argv=0x00007ffc97362c40) at qobject.cpp:4086:26
    frame #3: 0x00007927880e469a libKF6PulseAudioQt.so.5`PulseAudioQt::MapBase<PulseAudioQt::Sink, pa_sink_info>::removeEntry(unsigned int) [inlined] PulseAudioQt::MapBaseQObject::removed(this=0x0000792786d99788, _t1=0, _t2=0x00007927a9c7de00) at moc_maps.cpp:207:5
    frame #4: 0x00007927880e466d libKF6PulseAudioQt.so.5`PulseAudioQt::MapBase<PulseAudioQt::Sink, pa_sink_info>::removeEntry(this=0x0000792786d99788, index=<unavailable>) at maps.h:143:20
    frame #5: 0x00007927880eefdb libKF6PulseAudioQt.so.5`PulseAudioQt::MapBase<PulseAudioQt::Sink, pa_sink_info>::reset(this=0x0000792786d99788) at maps.h:95:13
    frame #6: 0x00007927880e3330 libKF6PulseAudioQt.so.5`PulseAudioQt::ContextPrivate::~ContextPrivate() [inlined] PulseAudioQt::ContextPrivate::reset(this=0x0000792786d99780) at context.cpp:700:13
    frame #7: 0x00007927880e3323 libKF6PulseAudioQt.so.5`PulseAudioQt::ContextPrivate::~ContextPrivate(this=0x0000792786d99780) at context.cpp:348:5
    frame #8: 0x00007927880e3f6e libKF6PulseAudioQt.so.5`PulseAudioQt::ContextPrivate::~ContextPrivate(this=<unavailable>) at context.cpp:337:1
    frame #9: 0x00007927880e328d libKF6PulseAudioQt.so.5`PulseAudioQt::Context::~Context(this=<unavailable>) at context.cpp:333:5
    frame #10: 0x00007927880e32ae libKF6PulseAudioQt.so.5`PulseAudioQt::Context::~Context(this=<unavailable>) at context.cpp:332:1
    frame #11: 0x00007927aab3e47e ld-musl-x86_64.so.1`__funcs_on_exit at atexit.c:34:3
    frame #12: 0x00007927aab3e67d ld-musl-x86_64.so.1`exit(code=<unavailable>) at exit.c:31:2
    frame #13: 0x00007927aab3dc24 ld-musl-x86_64.so.1`libc_start_main_stage2(main=(systemsettings`main at main.cpp:26), argc=<unavailable>, argv=0x00007ffc97362e48) at __libc_start_main.c:95:2
    frame #14: 0x0000567ca1323ad6 systemsettings`_start + 22
Comment 1 Nate Graham 2024-09-19 20:39:57 UTC
Cannot reproduce on git master, FWIW. This is on Fedora KDE 40.