Skip to content

Conversation

@bbedward
Copy link
Contributor

On resume was getting crashes like this:

#23 0x000055d9143f6271 _ZN2qs7service8pipewire16PwDefaultTracker15onNodeDestroyedEP7QObject #0 0x0000562eb464d110 _ZN17QArrayDataPointerIDsEC4ERKS0_ (std::_Rb_tree corruption) Jul 16 08:58:58 arch systemd-coredump[116918]: Process 116915 (quickshell) of user 1000 dumped core. 

This should defer the onNodeDestroyed signals until the next event loop iteration, I havent been able to re-create the crash since implementing this change.

resolves a crash that occured during suspend/resume - from a race condition of signalling immediately after setting current source/sink to nullptr
outfoxxed added a commit that referenced this pull request Jul 17, 2025
Consumers of defaultAudio*Changed signals can run code between safeDestroy being called and PwObjectIface destruction due to signal connection order. This change destroys ifaces earlier so they are nulled by the time a changed signal is fired from destruction. Fixes #116 #122 #124
@outfoxxed outfoxxed closed this Jul 17, 2025
outfoxxed added a commit that referenced this pull request Jul 17, 2025
Consumers of defaultAudio*Changed signals can run code between safeDestroy being called and PwObjectIface destruction due to signal connection order. This change destroys ifaces earlier so they are nulled by the time a changed signal is fired from destruction, preventing access between ~PwNode() and ~QObject() completion. Fixes #116 #122 #124
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

2 participants