Bug 483027 - Plasma crashed after closing apps with middle-click on the task manager
Summary: Plasma crashed after closing apps with middle-click on the task manager
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-crash (show other bugs)
Version: master
Platform: unspecified Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi, qt6
: 483018 (view as bug list)
Depends on:
Blocks:
 
Reported: 2024-03-09 19:49 UTC by Patrick Silva
Modified: 2024-03-12 19:19 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.0.2


Attachments
New crash information added by DrKonqi (110.77 KB, text/plain)
2024-03-09 19:49 UTC, Patrick Silva
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Patrick Silva 2024-03-09 19:49:12 UTC
Application: plasmashell (6.0.80)

Qt Version: 6.6.2
Frameworks Version: 6.0.0
Operating System: Linux 6.7.5-060705-generic x86_64
Windowing System: Wayland
Distribution: KDE neon Unstable Edition
DrKonqi: 6.0.80 [CoredumpBackend]

-- Information about the crash:
My laptop was sleeping, I resumed it, closed all running apps with middle-clicks on the task manager, then Plasma crashed.

The reporter is unsure if this crash is reproducible.

-- Backtrace (Reduced):
#6  __pthread_kill_implementation (no_tid=0, signo=6, threadid=133363329673920) at ./nptl/pthread_kill.c:44
#7  __pthread_kill_internal (signo=6, threadid=133363329673920) at ./nptl/pthread_kill.c:78
#8  __GI___pthread_kill (threadid=133363329673920, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#9  0x0000794b15e42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#10 0x0000794b15e287f3 in __GI_abort () at ./stdlib/abort.c:79


Reported using DrKonqi
Comment 1 Patrick Silva 2024-03-09 19:49:15 UTC
Created attachment 166823 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Nate Graham 2024-03-11 23:08:04 UTC

*** This bug has been marked as a duplicate of bug 482756 ***
Comment 3 Fushan Wen 2024-03-12 01:47:34 UTC
Do you have plasmashell log at the time it crashed?
Comment 4 Bug Janitor Service 2024-03-12 05:33:43 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/4049
Comment 5 Fushan Wen 2024-03-12 06:01:09 UTC
Git commit 78b1142f8b1d924e8e1b8bcf190cf4e4579795d4 by Fushan Wen.
Committed on 12/03/2024 at 05:48.
Pushed by fusionfuture into branch 'master'.

libkmpris: always update active player index on rows inserted

THe active player index can change on rows inserted, if:

1. Play a video in a browser with pbi
2. Pause the video
3. Start another player B
4. Play B to make it become the active player
5. Pause B, and B is still the active player
6. Close the browser. The pbi quits first, invalidating the filter
   model, and the original browser instance is added back, which is
   inserted before the current active player B.
7. An assertion is triggered because the active player index does not
   match the active player.

This also adds a test to consolidate the fix.
FIXED-IN: 6.0.2

M  +30   -2    appiumtests/mediacontrollertest.py
M  +6    -9    libkmpris/multiplexer.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/78b1142f8b1d924e8e1b8bcf190cf4e4579795d4
Comment 6 Fushan Wen 2024-03-12 06:16:59 UTC
Git commit bb4926b60822fbe6dbae15db19c02b214928123d by Fushan Wen.
Committed on 12/03/2024 at 06:02.
Pushed by fusionfuture into branch 'Plasma/6.0'.

libkmpris: always update active player index on rows inserted

THe active player index can change on rows inserted, if:

1. Play a video in a browser with pbi
2. Pause the video
3. Start another player B
4. Play B to make it become the active player
5. Pause B, and B is still the active player
6. Close the browser. The pbi quits first, invalidating the filter
   model, and the original browser instance is added back, which is
   inserted before the current active player B.
7. An assertion is triggered because the active player index does not
   match the active player.

This also adds a test to consolidate the fix.
FIXED-IN: 6.0.2


(cherry picked from commit 78b1142f8b1d924e8e1b8bcf190cf4e4579795d4)

M  +30   -2    appiumtests/mediacontrollertest.py
M  +6    -9    libkmpris/multiplexer.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/bb4926b60822fbe6dbae15db19c02b214928123d
Comment 7 Nicolas Fella 2024-03-12 19:18:39 UTC
#6  __pthread_kill_implementation (no_tid=0, signo=6, threadid=133363329673920) at ./nptl/pthread_kill.c:44
#7  __pthread_kill_internal (signo=6, threadid=133363329673920) at ./nptl/pthread_kill.c:78
#8  __GI___pthread_kill (threadid=133363329673920, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#9  0x0000794b15e42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#10 0x0000794b15e287f3 in __GI_abort () at ./stdlib/abort.c:79
#11 0x0000794b16adb017 in qAbort() () at ./src/corelib/global/qglobal.cpp:161
#12 0x0000794b16ad64e5 in qt_message_fatal<QString&> (message=..., context=<optimized out>) at ./src/corelib/global/qlogging.cpp:2003
#13 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=<optimized out>, msg=<optimized out>, ap=ap@entry=0x7ffce014bba0) at ./src/corelib/global/qlogging.cpp:378
#14 0x0000794b16adba43 in QMessageLogger::fatal(char const*, ...) const (this=<optimized out>, msg=<optimized out>) at ./src/corelib/global/qlogging.cpp:901
#15 0x0000794b16aa9cf4 in qt_assert_x(char const*, char const*, char const*, int) (where=where@entry=0x794ae4f89148 "void Multiplexer::updateIndex()", what=what@entry=0x794ae4f891bf "Model index is invalid", file=file@entry=0x794ae4f89168 "./libkmpris/multiplexer.cpp", line=line@entry=141) at ./src/corelib/global/qassert.cpp:77
#16 0x0000794ae4f588a2 in Multiplexer::updateIndex() (this=<optimized out>) at ./libkmpris/multiplexer.cpp:141
#17 0x0000794b16a2b7ce in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffce014bf10, r=0x6437e03a00b0, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:433
#18 doActivate<false>(QObject*, int, void**) (sender=0x6437e03a0570, signal_index=15, argv=0x7ffce014bf10) at ./src/corelib/kernel/qobject.cpp:4039
#19 0x0000794b168d2d52 in QAbstractItemModel::rowsRemoved(QModelIndex const&, int, int, QAbstractItemModel::QPrivateSignal) (this=this@entry=0x6437e03a0570, _t1=..., _t2=<optimized out>, _t3=<optimized out>, _t4=...) at ./obj-x86_64-linux-gnu/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:1370
#20 0x0000794b168d2e16 in QAbstractItemModel::endRemoveRows() (this=0x6437e03a0570) at ./src/corelib/itemmodels/qabstractitemmodel.cpp:2963
#21 0x0000794b168f1d0d in QSortFilterProxyModelPrivate::remove_proxy_interval(QList<int>&, QList<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) (this=0x6437e03a05d0, emit_signal=<optimized out>, orient=Qt::Vertical, proxy_parent=..., proxy_end=<optimized out>, proxy_start=<optimized out>, proxy_to_source=..., source_to_proxy=...) at ./src/corelib/itemmodels/qsortfilterproxymodel.cpp:805
#22 QSortFilterProxyModelPrivate::remove_source_items(QList<int>&, QList<int>&, QList<int> const&, QModelIndex const&, Qt::Orientation, bool) (this=this@entry=0x6437e03a05d0, source_to_proxy=..., proxy_to_source=..., source_items=..., source_parent=..., orient=orient@entry=Qt::Vertical, emit_signal=true) at ./src/corelib/itemmodels/qsortfilterproxymodel.cpp:772
#23 0x0000794b168f2081 in QSortFilterProxyModelPrivate::source_items_about_to_be_removed(QModelIndex const&, int, int, Qt::Orientation) (orient=Qt::Vertical, end=1, start=1, source_parent=..., this=0x6437e03a05d0) at ./src/corelib/itemmodels/qsortfilterproxymodel.cpp:1076
#24 QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeRemoved(QModelIndex const&, int, int) (this=0x6437e03a05d0, source_parent=..., start=1, end=1) at ./src/corelib/itemmodels/qsortfilterproxymodel.cpp:1713
#25 0x0000794b16a2b7ce in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffce014c210, r=0x6437e03a0570, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:433
#26 doActivate<false>(QObject*, int, void**) (sender=0x6437dff2a2f0, signal_index=14, argv=0x7ffce014c210) at ./src/corelib/kernel/qobject.cpp:4039
#27 0x0000794b168d2c32 in QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int, QAbstractItemModel::QPrivateSignal) (this=this@entry=0x6437dff2a2f0, _t1=..., _t2=<optimized out>, _t2@entry=1, _t3=<optimized out>, _t3@entry=1, _t4=...) at ./obj-x86_64-linux-gnu/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:1363
#28 0x0000794b168d2cb9 in QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) (this=0x6437dff2a2f0, parent=..., first=1, last=1) at ./src/corelib/itemmodels/qabstractitemmodel.cpp:2946
#29 0x0000794ae4f5fb56 in Mpris2SourceModel::removeMediaPlayer(QString const&) (this=0x6437dff2a2f0, sourceName=<optimized out>) at ./libkmpris/mpris2sourcemodel.cpp:419
#30 0x0000794ae4f6014c in Mpris2SourceModel::onServiceOwnerChanged(QString const&, QString const&, QString const&) (this=0x6437dff2a2f0, serviceName=..., oldOwner=<optimized out>, newOwner=...) at ./libkmpris/mpris2sourcemodel.cpp:210
#31 0x0000794b16a2b7ce in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffce014c5a0, r=0x6437dff2a2f0, this=<optimized out>, this=<optimized out>, r=<optimized out>, a=<optimized out>) at ./src/corelib/kernel/qobjectdefs_impl.h:433
#32 doActivate<false>(QObject*, int, void**) (sender=0x6437e03a00f0, signal_index=5, argv=0x7ffce014c5a0) at ./src/corelib/kernel/qobject.cpp:4039
#33 0x0000794b17bba573 in QDBusServiceWatcher::serviceOwnerChanged(QString const&, QString const&, QString const&) (this=this@entry=0x6437e03a00f0, _t1=..., _t2=..., _t3=...) at ./obj-x86_64-linux-gnu/src/dbus/DBus_autogen/include/moc_qdbusservicewatcher.cpp:318
#34 0x0000794b17bbdc7e in QDBusServiceWatcherPrivate::_q_serviceOwnerChanged(QString const&, QString const&, QString const&) (this=<optimized out>, newOwner=..., oldOwner=..., service=...) at ./src/dbus/qdbusservicewatcher.cpp:53
#35 QDBusServiceWatcher::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at ./obj-x86_64-linux-gnu/src/dbus/DBus_autogen/include/moc_qdbusservicewatcher.cpp:209
#36 0x0000794b17bbdeb8 in QDBusServiceWatcher::qt_metacall(QMetaObject::Call, int, void**) (this=0x6437e03a00f0, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7ffce014c7a8) at ./obj-x86_64-linux-gnu/src/dbus/DBus_autogen/include/moc_qdbusservicewatcher.cpp:285
#37 0x0000794b17beba5f in QDBusConnectionPrivate::deliverCall(QObject*, int, QDBusMessage const&, QList<QMetaType> const&, int) [clone .constprop.0] (this=0x794b0c004200, object=0x6437e03a00f0, msg=..., metaTypes=<optimized out>, slotIdx=8) at ./src/dbus/qdbusintegrator.cpp:977
#38 0x0000794b169c9572 in QObject::event(QEvent*) (this=0x6437e03a00f0, e=0x794b0c0a7b80) at ./src/corelib/kernel/qobject.cpp:1437
#39 0x0000794b18bf40eb in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x6437e03a00f0, e=0x794b0c0a7b80) at ./src/widgets/kernel/qapplication.cpp:3296
#40 0x0000794b16a63e18 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x6437e03a00f0, event=event@entry=0x794b0c0a7b80) at ./src/corelib/kernel/qcoreapplication.cpp:1121
#41 0x0000794b16a63e5d in QCoreApplication::sendEvent(QObject*, QEvent*) (receiver=<optimized out>, event=event@entry=0x794b0c0a7b80) at ./src/corelib/kernel/qcoreapplication.cpp:1539
#42 0x0000794b16a64530 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=0x0, event_type=0, data=0x6437dd8da550) at ./src/corelib/kernel/qcoreapplication.cpp:1901
#43 0x0000794b168632f7 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x6437dd930be0) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:243
#44 0x0000794b15236d3b in g_main_dispatch (context=0x794b0c005040) at ../../../glib/gmain.c:3419
#45 g_main_context_dispatch (context=0x794b0c005040) at ../../../glib/gmain.c:4137
#46 0x0000794b1528c258 in g_main_context_iterate.constprop.0 (context=context@entry=0x794b0c005040, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4213
#47 0x0000794b152343e3 in g_main_context_iteration (context=0x794b0c005040, may_block=1) at ../../../glib/gmain.c:4278
#48 0x0000794b1685e1f0 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x6437dd8e3c30, flags=...) at ./src/corelib/kernel/qeventdispatcher_glib.cpp:393
#49 0x0000794b16a6604b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7ffce014cd70, flags=..., flags@entry=...) at ./src/corelib/global/qflags.h:34
#50 0x0000794b16a67c7c in QCoreApplication::exec() () at ./src/corelib/global/qflags.h:74
#51 0x0000794b16ee9a20 in QGuiApplication::exec() () at ./src/gui/kernel/qguiapplication.cpp:1925
#52 0x0000794b18bf1689 in QApplication::exec() () at ./src/widgets/kernel/qapplication.cpp:2574
#53 0x00006437dd7b9b74 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at ./shell/main.cpp:211
Comment 8 Nicolas Fella 2024-03-12 19:19:35 UTC
*** Bug 483018 has been marked as a duplicate of this bug. ***