Bug 481992 - Process Viewer message crashes in Plasmashell
Summary: Process Viewer message crashes in Plasmashell
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-crash (show other bugs)
Version: master
Platform: Neon Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi, qt6
Depends on:
Blocks:
 
Reported: 2024-02-29 03:53 UTC by Carlos
Modified: 2024-03-03 01:21 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.0.1


Attachments
New crash information added by DrKonqi (69.32 KB, text/plain)
2024-02-29 03:53 UTC, Carlos
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Carlos 2024-02-29 03:53:03 UTC
Application: plasmashell (6.0.0)

Qt Version: 6.6.2
Frameworks Version: 6.0.0
Operating System: Linux 6.5.0-21-generic x86_64
Windowing System: X11
Distribution: KDE neon 6.0
DrKonqi: 6.0.0 [CoredumpBackend]

-- Information about the crash:
I was browsing the web, using Mozilla Firefox and casting to my TV, through Google Chrome, when I received the failed Process Viewer message. But I don't know what caused this failure.

The reporter is unsure if this crash is reproducible.

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


Reported using DrKonqi
Comment 1 Carlos 2024-02-29 03:53:04 UTC
Created attachment 166181 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 Méven Car 2024-02-29 16:16:08 UTC
Relevant trace:

Thread 1 (Thread 0x7fe18d043fc0 (LWP 1475)):
[KCrash Handler]
#6  __pthread_kill_implementation (no_tid=0, signo=6, threadid=140606710235072) at ./nptl/pthread_kill.c:44
#7  __pthread_kill_internal (signo=6, threadid=140606710235072) at ./nptl/pthread_kill.c:78
#8  __GI___pthread_kill (threadid=140606710235072, signo=signo@entry=6) at ./nptl/pthread_kill.c:89
#9  0x00007fe191042476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#10 0x00007fe1910287f3 in __GI_abort () at ./stdlib/abort.c:79
#11 0x00007fe191cdb017 in qAbort() () at ./src/corelib/global/qglobal.cpp:161
#12 0x00007fe191cd64e5 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=0x7ffd32c1ae40) at ./src/corelib/global/qlogging.cpp:378
#14 0x00007fe191cdba43 in QMessageLogger::fatal(char const*, ...) const (this=<optimized out>, msg=<optimized out>) at ./src/corelib/global/qlogging.cpp:901
#15 0x00007fe191ca9cf4 in qt_assert_x(char const*, char const*, char const*, int) (where=where@entry=0x7fe105a3b148 "void Multiplexer::updateIndex()", what=<optimized out>, file=file@entry=0x7fe105a3b168 "./libkmpris/multiplexer.cpp", line=line@entry=120) at ./src/corelib/global/qassert.cpp:77
#16 0x00007fe105a0a706 in Multiplexer::updateIndex() (this=0x55c5b5567db0) at ./libkmpris/multiplexer.cpp:120
#17 0x00007fe191c2b7ce in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffd32c1b1a0, r=0x55c5b5567db0, 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=0x55c5b5568790, signal_index=15, argv=0x7ffd32c1b1a0) at ./src/corelib/kernel/qobject.cpp:4039
#19 0x00007fe191ad2d52 in QAbstractItemModel::rowsRemoved(QModelIndex const&, int, int, QAbstractItemModel::QPrivateSignal) (this=this@entry=0x55c5b5568790, _t1=..., _t2=<optimized out>, _t3=<optimized out>, _t4=...) at ./obj-x86_64-linux-gnu/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:1370
#20 0x00007fe191ad2e16 in QAbstractItemModel::endRemoveRows() (this=0x55c5b5568790) at ./src/corelib/itemmodels/qabstractitemmodel.cpp:2963
#21 0x00007fe191af1d0d in QSortFilterProxyModelPrivate::remove_proxy_interval(QList<int>&, QList<int>&, int, int, QModelIndex const&, Qt::Orientation, bool) (this=0x55c5b55687f0, 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=0x55c5b55687f0, 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 0x00007fe191af2081 in QSortFilterProxyModelPrivate::source_items_about_to_be_removed(QModelIndex const&, int, int, Qt::Orientation) (orient=Qt::Vertical, end=1, start=1, source_parent=..., this=0x55c5b55687f0) at ./src/corelib/itemmodels/qsortfilterproxymodel.cpp:1076
#24 QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeRemoved(QModelIndex const&, int, int) (this=0x55c5b55687f0, source_parent=..., start=1, end=1) at ./src/corelib/itemmodels/qsortfilterproxymodel.cpp:1713
#25 0x00007fe191c2b7ce in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffd32c1b4a0, r=0x55c5b5568790, 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=0x55c5b50bc580, signal_index=14, argv=0x7ffd32c1b4a0) at ./src/corelib/kernel/qobject.cpp:4039
#27 0x00007fe191ad2c32 in QAbstractItemModel::rowsAboutToBeRemoved(QModelIndex const&, int, int, QAbstractItemModel::QPrivateSignal) (this=this@entry=0x55c5b50bc580, _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 0x00007fe191ad2cb9 in QAbstractItemModel::beginRemoveRows(QModelIndex const&, int, int) (this=0x55c5b50bc580, parent=..., first=1, last=1) at ./src/corelib/itemmodels/qabstractitemmodel.cpp:2946
#29 0x00007fe105a11726 in Mpris2SourceModel::removeMediaPlayer(QString const&) (this=0x55c5b50bc580, sourceName=<optimized out>) at ./libkmpris/mpris2sourcemodel.cpp:419
#30 0x00007fe105a11d1c in Mpris2SourceModel::onServiceOwnerChanged(QString const&, QString const&, QString const&) (this=0x55c5b50bc580, serviceName=..., oldOwner=<optimized out>, newOwner=...) at ./libkmpris/mpris2sourcemodel.cpp:210
#31 0x00007fe191c2b7ce in QtPrivate::QSlotObjectBase::call(QObject*, void**) (a=0x7ffd32c1b830, r=0x55c5b50bc580, 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=0x55c5b5567df0, signal_index=5, argv=0x7ffd32c1b830) at ./src/corelib/kernel/qobject.cpp:4039
#33 0x00007fe1926e2573 in QDBusServiceWatcher::serviceOwnerChanged(QString const&, QString const&, QString const&) (this=this@entry=0x55c5b5567df0, _t1=..., _t2=..., _t3=...) at ./obj-x86_64-linux-gnu/src/dbus/DBus_autogen/include/moc_qdbusservicewatcher.cpp:318
#34 0x00007fe1926e5c7e 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 0x00007fe1926e5eb8 in QDBusServiceWatcher::qt_metacall(QMetaObject::Call, int, void**) (this=0x55c5b5567df0, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7ffd32c1ba38) at ./obj-x86_64-linux-gnu/src/dbus/DBus_autogen/include/moc_qdbusservicewatcher.cpp:285
Comment 3 Nate Graham 2024-03-01 20:33:23 UTC

*** This bug has been marked as a duplicate of bug 477144 ***
Comment 4 Fushan Wen 2024-03-02 02:52:23 UTC
Can you find "Current active player" in plasmashell's systemd unit log?
Comment 5 Bug Janitor Service 2024-03-02 05:21:25 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/3992
Comment 6 Fushan Wen 2024-03-02 05:33:20 UTC
Git commit 2f809bd794076c8df3e87af25b9c2020c562dad1 by Fushan Wen.
Committed on 02/03/2024 at 05:18.
Pushed by fusionfuture into branch 'master'.

libkmpris: find active player index in filter proxy model

When the filter proxy model emits rowsRemoved, the player is still
not erased from m_container, so when the active player is the **last**
player in m_container, m_filterModel->mapFromSource(sourceModel->index(sourceRow, 0))
will return an invalid index because the source index becomes
stale (source_index.row() >= m->proxy_rows.size()) in the filter model.
FIXED-IN: 6.0

M  +32   -3    appiumtests/mediacontrollertest.py
M  +30   -21   libkmpris/multiplexer.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/2f809bd794076c8df3e87af25b9c2020c562dad1
Comment 7 Fushan Wen 2024-03-02 05:52:27 UTC
Git commit 89f68ceccd08bda6f804a9b1c9c722ef0852d40b by Fushan Wen.
Committed on 02/03/2024 at 05:34.
Pushed by fusionfuture into branch 'Plasma/6.0'.

libkmpris: find active player index in filter proxy model

When the filter proxy model emits rowsRemoved, the player is still
not erased from m_container, so when the active player is the **last**
player in m_container, m_filterModel->mapFromSource(sourceModel->index(sourceRow, 0))
will return an invalid index because the source index becomes
stale (source_index.row() >= m->proxy_rows.size()) in the filter model.
FIXED-IN: 6.0


(cherry picked from commit 2f809bd794076c8df3e87af25b9c2020c562dad1)

M  +32   -3    appiumtests/mediacontrollertest.py
M  +30   -21   libkmpris/multiplexer.cpp

https://invent.kde.org/plasma/plasma-workspace/-/commit/89f68ceccd08bda6f804a9b1c9c722ef0852d40b