Skip to content

libkmpris: disconnect from PlayerContainer in MultiplexerModel's dtor

Fushan Wen requested to merge work/fuf/compactrep into master

Reason for the change

MultiplexerModel is destroyed before PlayerContainer but it's not guaranteed the destroyed signal is disconnected after ~MultiplexerModel()

libQt6Core.so.6.7.2+0x196120QObjectPrivate::connectImpl (qobject.cpp:5277)
libQt6Core.so.6.7.2+0x19645fQObject::connectImpl (qobject.cpp:5189)
libkmpris.so.6.1.4+0x021fe7QObject::connect (qobject.h:263)
libkmpris.so.6.1.4+0x021fe7MultiplexerModel::updateActivePlayer (multiplexermodel.cpp:110)
libQt6Core.so.6.7.2+0x1a3396QtPrivate::QSlotObjectBase::call (qobjectdefs_impl.h:469)
libQt6Core.so.6.7.2+0x1a3396doActivate (qobject.cpp:4086)
libQt6Core.so.6.7.2+0x1a3396QtPrivate::QSlotObjectBase::call (qobjectdefs_impl.h:469)
libQt6Core.so.6.7.2+0x1a3396doActivate (qobject.cpp:4086)
libQt6Core.so.6.7.2+0x1926e5QObject::destroyed (moc_qobject.cpp:229)
libQt6Core.so.6.7.2+0x1926e5QObject::~QObject (qobject.cpp:1074)
libQt6Core.so.6.7.2+0x1926e5QObject::destroyed (moc_qobject.cpp:229)
libQt6Core.so.6.7.2+0x1926e5QObject::~QObject (qobject.cpp:1074)
libkmpris.so.6.1.4+0x025155PlayerContainer::~PlayerContainer (playercontainer.cpp:189)
libQt6Core.so.6.7.2+0x18c60aQObjectPrivate::deleteChildren (qobject.cpp:2222)
libQt6Core.so.6.7.2+0x192677QObject::~QObject (qobject.cpp:1172)
libkmpris.so.6.1.4+0x012080Mpris2SourceModel::~Mpris2SourceModel (mpris2sourcemodel.cpp:44)
libkmpris.so.6.1.4+0x012080std::_Sp_counted_ptr::_M_dispose (shared_ptr_base.h:428)
libkmpris.so.6.1.4+0x0204b5std::_Sp_counted_base::_M_release_last_use (shared_ptr_base.h:175)
libkmpris.so.6.1.4+0x0204b5std::_Sp_counted_base::_M_release_last_use_cold (shared_ptr_base.h:199)
libkmpris.so.6.1.4+0x020632std::_Sp_counted_base::_M_release (shared_ptr_base.h:353)
libkmpris.so.6.1.4+0x020632std::__shared_count::~__shared_count (shared_ptr_base.h:1069)
libkmpris.so.6.1.4+0x020632std::__shared_ptr::~__shared_ptr (shared_ptr_base.h:1525)
libkmpris.so.6.1.4+0x020632std::shared_ptr::~shared_ptr (shared_ptr.h:175)
libkmpris.so.6.1.4+0x020632Mpris2FilterProxyModel::~Mpris2FilterProxyModel (mpris2filterproxymodel.cpp:40)
libkmpris.so.6.1.4+0x0206a0Mpris2FilterProxyModel::~Mpris2FilterProxyModel (mpris2filterproxymodel.cpp:40)
libkmpris.so.6.1.4+0x0206a0std::_Sp_counted_ptr::_M_dispose (shared_ptr_base.h:428)
libkmpris.so.6.1.4+0x0204b5std::_Sp_counted_base::_M_release_last_use (shared_ptr_base.h:175)
libkmpris.so.6.1.4+0x0204b5std::_Sp_counted_base::_M_release_last_use_cold (shared_ptr_base.h:199)
libkmpris.so.6.1.4+0x020a17std::_Sp_counted_base::_M_release (shared_ptr_base.h:353)
libkmpris.so.6.1.4+0x020a17std::__shared_count::~__shared_count (shared_ptr_base.h:1069)
libkmpris.so.6.1.4+0x020a17std::__shared_ptr::~__shared_ptr (shared_ptr_base.h:1525)
libkmpris.so.6.1.4+0x020a17std::shared_ptr::~shared_ptr (shared_ptr.h:175)
libkmpris.so.6.1.4+0x020a17Multiplexer::~Multiplexer (multiplexer.cpp:45)
libkmpris.so.6.1.4+0x020a17std::destroy_at (stl_construct.h:88)
libkmpris.so.6.1.4+0x020a17std::_Destroy (stl_construct.h:149)
libkmpris.so.6.1.4+0x020a17std::allocator_traits::destroy (alloc_traits.h:671)
libkmpris.so.6.1.4+0x020a17std::_Sp_counted_ptr_inplace::_M_dispose (shared_ptr_base.h:616)
libkmpris.so.6.1.4+0x0204b5std::_Sp_counted_base::_M_release_last_use (shared_ptr_base.h:175)
libkmpris.so.6.1.4+0x0204b5std::_Sp_counted_base::_M_release_last_use_cold (shared_ptr_base.h:199)
libkmpris.so.6.1.4+0x020ad7std::_Sp_counted_base::_M_release (shared_ptr_base.h:353)
libkmpris.so.6.1.4+0x020ad7std::__shared_count::~__shared_count (shared_ptr_base.h:1069)
libkmpris.so.6.1.4+0x020ad7std::__shared_ptr::~__shared_ptr (shared_ptr_base.h:1525)
libkmpris.so.6.1.4+0x020ad7std::shared_ptr::~shared_ptr (shared_ptr.h:175)
libkmpris.so.6.1.4+0x020ad7MultiplexerModel::~MultiplexerModel (multiplexermodel.cpp:61)
libkmpris.so.6.1.4+0x0204b5std::_Sp_counted_base::_M_release_last_use (shared_ptr_base.h:175)
libkmpris.so.6.1.4+0x0204b5std::_Sp_counted_base::_M_release_last_use_cold (shared_ptr_base.h:199)
libkmpris.so.6.1.4+0x020827std::_Sp_counted_base::_M_release (shared_ptr_base.h:353)
libkmpris.so.6.1.4+0x020827std::__shared_count::~__shared_count (shared_ptr_base.h:1069)
libkmpris.so.6.1.4+0x020827std::__shared_ptr::~__shared_ptr (shared_ptr_base.h:1525)
libkmpris.so.6.1.4+0x020827std::shared_ptr::~shared_ptr (shared_ptr.h:175)
libkmpris.so.6.1.4+0x020827Mpris2Model::~Mpris2Model (mpris2model.cpp:37)
libkmpris.so.6.1.4+0x032c18QQmlPrivate::QQmlElement::~QQmlElement (qqmlprivate.h:100)
libQt6Core.so.6.7.2+0x18c60aQObjectPrivate::deleteChildren (qobject.cpp:2222)
libQt6Core.so.6.7.2+0x192677QObject::~QObject (qobject.cpp:1172)
libPlasmaQuick.so.6.1.4+0x02db23PlasmoidItem::~PlasmoidItem (plasmoiditem.cpp:46)
libPlasmaQuick.so.6.1.4+0x02db23QQmlPrivate::QQmlElement::~QQmlElement (qqmlprivate.h:100)
libPlasmaQuick.so.6.1.4+0x04a274PlasmaQuick::SharedQmlEngine::~SharedQmlEngine (sharedqmlengine.cpp:153)
libPlasmaQuick.so.6.1.4+0x027647PlasmaQuick::SharedQmlEngine::~SharedQmlEngine (sharedqmlengine.cpp:155)
libPlasmaQuick.so.6.1.4+0x027647operator() (appletquickitem.cpp:657)
libPlasmaQuick.so.6.1.4+0x027647call (qobjectdefs_impl.h:137)
libPlasmaQuick.so.6.1.4+0x027647call (qobjectdefs_impl.h:345)
libPlasmaQuick.so.6.1.4+0x027647QtPrivate::QCallableObject::impl (qobjectdefs_impl.h:555)
libQt6Core.so.6.7.2+0x1a3396QtPrivate::QSlotObjectBase::call (qobjectdefs_impl.h:469)
libQt6Core.so.6.7.2+0x1a3396doActivate (qobject.cpp:4086)
libQt6Core.so.6.7.2+0x1a3396QtPrivate::QSlotObjectBase::call (qobjectdefs_impl.h:469)
libQt6Core.so.6.7.2+0x1a3396doActivate (qobject.cpp:4086)
libPlasma.so.6.1.4+0x023924Plasma::Applet::appletDeleted (moc_applet.cpp:926)
libPlasma.so.6.1.4+0x018d64Plasma::Applet::~Applet (applet.cpp:79)
libPlasma.so.6.1.4+0x018e55Plasma::Applet::~Applet (applet.cpp:92)
libQt6Core.so.6.7.2+0x18c60aQObjectPrivate::deleteChildren (qobject.cpp:2222)
libQt6Core.so.6.7.2+0x192677QObject::~QObject (qobject.cpp:1172)
org.kde.plasma.private.systemtray+0x013094SystemTray::~SystemTray (systemtray.cpp:50)
libQt6Core.so.6.7.2+0x18c60aQObjectPrivate::deleteChildren (qobject.cpp:2222)
libQt6Core.so.6.7.2+0x192677QObject::~QObject (qobject.cpp:1172)
org.kde.plasma.systemtray+0x0035d0
libQt6Core.so.6.7.2+0x18c60aQObjectPrivate::deleteChildren (qobject.cpp:2222)
libQt6Core.so.6.7.2+0x192677QObject::~QObject (qobject.cpp:1172)
libPlasma.so.6.1.4+0x027f85Plasma::Containment::~Containment (containment.cpp:66)
plasmashell+0x058f9bShellCorona::~ShellCorona (shellcorona.cpp:366)In App
plasmashell+0x059424ShellCorona::~ShellCorona (shellcorona.cpp:368)In App
Called fromlibQt6Core.so.6.7.2+0x18d689qDeleteInEventHandler (qobject.cpp:5002)

Test plan

Screenshots or screen recordings

Bugs fixed

SENTRY: PLASMA-WORKSPACE-10CA

Edited by Fushan Wen

Merge request reports