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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants