When the system is switched to Arabic language the system monitor ending process and applications ability stops working. SOFTWARE/OS VERSIONS Operating System :Kubuntu 26.04 LTS KDE Plasma Version: 6.6.4 KDE Frameworks Version: 6.24.0 Qt Version: 6.10.2
I can reproduce this issue on current git master, too. Testable with `LANGUAGE=ar_AR plasma-systemmonitor` and then try to kill a process.
Causes a ton of errors to be printed, like QSortFilterProxyModel: index from wrong model passed to mapToSource file:///home/wolki/kde/usr/share/ksysguard/sensorfaces/org.kde.ksysguard.processtable/contents/ui/ProcessTableView.qml:189:17: Unable to assign [undefined] to double QSortFilterProxyModel: index from wrong model passed to mapToSource file:///home/wolki/kde/usr/share/ksysguard/sensorfaces/org.kde.ksysguard.processtable/contents/ui/ProcessTableView.qml:189:17: Unable to assign [undefined] to double QSortFilterProxyModel: index from wrong model passed to mapToSource qt.core.qabstractitemmodel.checkindex: Index QModelIndex(-1,-1,0x0,QObject(0x0)) is not valid (expected valid) file:///home/wolki/kde/usr/share/ksysguard/sensorfaces/org.kde.ksysguard.processtable/contents/ui/ProcessTableView.qml:163: TypeError: Cannot read property 'split' of undefined Sorting the table also does not work. Does not seem to be specific to ar_AR, same problem happens in he_IL. It does apparently not happen in a LtR language with special characters like ja_JP, so RtL is likely the relevant factor. While testing, I managed to get it to crash once in he_IL, immediately after launching an app so I could try to kill it, with the system monitor already open. I haven't been able to reproduce the same crash again using similar steps. It does crash in the model though, so may be relevant. Full trace: #0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=11, no_tid=no_tid@entry=0) at pthread_kill.c:44 #1 0x00007f3344c7be93 in __pthread_kill_internal (threadid=<optimized out>, signo=11) at pthread_kill.c:89 #2 0x00007f3344c20f8e in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26 #3 0x00007f33486e1d0f in KCrash::defaultCrashHandler (sig=11) at /home/wolki/kde/src/kcrash/src/kcrash.cpp:630 #4 0x00007f3344c210b0 in <signal handler called> () at /lib64/libc.so.6 #5 QtPrivate::QModelIndexWrapper::QModelIndexWrapper (this=0x7fff4f7263d0, i=...) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/itemmodels/qabstractitemmodel_p.h:46 #6 QSortFilterProxyModelPrivate::index_to_iterator (proxy_index=..., this=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/itemmodels/qsortfilterproxymodel.cpp:271 #7 QSortFilterProxyModel::parent (this=0x3c21a6d0, child=...) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/itemmodels/qsortfilterproxymodel.cpp:2153 #8 0x00007f33450da4d0 in QModelIndex::parent (this=0x7fff4f726400) at /usr/include/qt6/QtCore/qabstractitemmodel.h:507 #9 KRearrangeColumnsProxyModel::parent (this=0x3c205b00, child=<optimized out>) at /home/wolki/kde/src/kitemmodels/src/core/krearrangecolumnsproxymodel.cpp:126 #10 0x00007f3344934bc2 in QModelIndex::parent (this=<optimized out>) at /usr/include/qt6/QtCore/qabstractitemmodel.h:506 #11 QQmlTreeModelToTableModel::modelDataChanged (this=0x3c1d6630, topLeft=..., bottomRight=..., roles=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtdeclarative-6.11.1-2.fc44.x86_64/src/qmlmodels/qqmltreemodeltotablemodel.cpp:645 #12 0x00007f3345384eb7 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x3c1d6630, a=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs_impl.h:462 #13 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=argv@entry=0x7fff4f726670) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4372 #14 0x00007f334537ab47 in QMetaObject::activate (sender=sender@entry=0x3c205b00, m=m@entry=0x7f33459219e0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff4f726670) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4432 #15 0x00007f33455cbcb1 in QMetaObject::activate<void, QModelIndex, QModelIndex, QList<int> > (sender=0x3c205b00, mo=0x7f33459219e0, local_signal_index=0, ret=0x0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs.h:320 #16 QAbstractItemModel::dataChanged (this=this@entry=0x3c205b00, _t1=..., _t2=..., _t3=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:658 #17 0x00007f3345621e9d in QIdentityProxyModelPrivate::sourceDataChanged (this=<optimized out>, topLeft=..., bottomRight=<optimized out>, roles=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/itemmodels/qidentityproxymodel.cpp:478 #18 0x00007f3345384eb7 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x3c205b00, a=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs_impl.h:462 #19 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=argv@entry=0x7fff4f726820) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4372 #20 0x00007f334537ab47 in QMetaObject::activate (sender=sender@entry=0x3, m=m@entry=0x7f33459219e0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff4f726820) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4432 #21 0x00007f33455cbcb1 in QMetaObject::activate<void, QModelIndex, QModelIndex, QList<int> > (sender=0x3, mo=0x7f33459219e0, local_signal_index=0, ret=0x0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs.h:320 #22 QAbstractItemModel::dataChanged (this=this@entry=0x3c21a6d0, _t1=..., _t2=..., _t3=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:658 #23 0x00007f334563ddd4 in QSortFilterProxyModelPrivate::_q_sourceDataChanged (this=0x3d31afb0, source_top_left=<optimized out>, source_bottom_right=<optimized out>, roles=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/itemmodels/qsortfilterproxymodel.cpp:1530 #24 0x00007f3345384eb7 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x3c21a6d0, a=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs_impl.h:462 #25 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=argv@entry=0x7fff4f726bb0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4372 #26 0x00007f334537ab47 in QMetaObject::activate (sender=sender@entry=0x3cd9b6f0, m=m@entry=0x7f33459219e0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff4f726bb0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4432 #27 0x00007f33455cbcb1 in QMetaObject::activate<void, QModelIndex, QModelIndex, QList<int> > (sender=0x3cd9b6f0, mo=0x7f33459219e0, local_signal_index=0, ret=0x0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs.h:320 #28 QAbstractItemModel::dataChanged (this=this@entry=0x3cd9b6f0, _t1=..., _t2=..., _t3=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:658 #29 0x00007f3345621e9d in QIdentityProxyModelPrivate::sourceDataChanged (this=<optimized out>, topLeft=..., bottomRight=<optimized out>, roles=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/itemmodels/qidentityproxymodel.cpp:478 #30 0x00007f3345384eb7 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x3cd9b6f0, a=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs_impl.h:462 #31 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=argv@entry=0x7fff4f726d60) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4372 #32 0x00007f334537ab47 in QMetaObject::activate (sender=sender@entry=0x3cd9b4c0, m=m@entry=0x7f33459219e0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff4f726d60) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4432 #33 0x00007f33455cbcb1 in QMetaObject::activate<void, QModelIndex, QModelIndex, QList<int> > (sender=0x3cd9b4c0, mo=0x7f33459219e0, local_signal_index=0, ret=0x0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs.h:320 #34 QAbstractItemModel::dataChanged (this=this@entry=0x3cd9b4c0, _t1=..., _t2=..., _t3=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:658 #35 0x00007f3345621e9d in QIdentityProxyModelPrivate::sourceDataChanged (this=<optimized out>, topLeft=..., bottomRight=<optimized out>, roles=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/itemmodels/qidentityproxymodel.cpp:478 #36 0x00007f3345384eb7 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x3cd9b4c0, a=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs_impl.h:462 #37 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=argv@entry=0x7fff4f726f10) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4372 #38 0x00007f334537ab47 in QMetaObject::activate (sender=sender@entry=0x3cd812d0, m=m@entry=0x7f33459219e0, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff4f726f10) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4432 #39 0x00007f33455cbcb1 in QMetaObject::activate<void, QModelIndex, QModelIndex, QList<int> > (sender=0x3cd812d0, mo=0x7f33459219e0, local_signal_index=0, ret=0x0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs.h:320 #40 QAbstractItemModel::dataChanged (this=this@entry=0x3cd812d0, _t1=..., _t2=..., _t3=QList<int> (size = 3) = {...}) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qabstractitemmodel.cpp:658 #41 0x00007f3344b0e9f5 in KSysGuard::ProcessDataModel::Private::handleChangedProcesses (this=<optimized out>) at /home/wolki/kde/src/libksysguard/processcore/process_data_model.cpp:527 #42 0x00007f3345384eb7 in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=0x3cd812d0, a=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs_impl.h:462 #43 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=argv@entry=0x7fff4f7271a0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4372 #44 0x00007f334537ab47 in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7f334591d400 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fff4f7271a0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:4432 #45 0x00007f3345395233 in QMetaObject::activate<void, QTimer::QPrivateSignal> (sender=<optimized out>, mo=0x7f334591d400 <QTimer::staticMetaObject>, local_signal_index=0, ret=0x0) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobjectdefs.h:320 #46 QTimer::timeout (this=<optimized out>, _t1=...) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/redhat-linux-build/src/corelib/Core_autogen/include/moc_qtimer.cpp:182 #47 0x00007f3345380793 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qobject.cpp:1509 #48 0x00007f3347e3f92e in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x3cc56b30, e=0x7fff4f727350) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/widgets/kernel/qapplication.cpp:3276 #49 0x00007f334530f7b8 in QCoreApplication::notifyInternal2 (receiver=0x3cc56b30, event=0x7fff4f727350) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qcoreapplication.cpp:1114 #50 0x00007f334530f7fd in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qcoreapplication.cpp:1559 #51 0x00007f334550b669 in QTimerInfoList::activateTimers (this=0x39b40d90) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qtimerinfo_unix.cpp:427 #52 0x00007f33456697b9 in timerSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:153 #53 0x00007f3344793f24 in g_main_dispatch (context=0x7f332c000f00) at ../glib/gmain.c:3591 #54 g_main_context_dispatch_unlocked (context=0x7f332c000f00) at ../glib/gmain.c:4451 #55 0x00007f3344798038 in g_main_context_iterate_unlocked (context=context@entry=0x7f332c000f00, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4516 #56 0x00007f33447981e3 in g_main_context_iteration (context=0x7f332c000f00, may_block=1) at ../glib/gmain.c:4582 #57 0x00007f3345669a9d in QEventDispatcherGlib::processEvents (this=0x39b2eed0, flags=...) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qeventdispatcher_glib.cpp:402 #58 0x00007f334531d57b in QEventLoop::exec (this=this@entry=0x7fff4f7275f0, flags=..., flags@entry=...) at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/global/qflags.h:78 #59 0x00007f3345318992 in QCoreApplication::exec () at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/corelib/kernel/qcoreapplication.cpp:1457 #60 0x00007f33468eff1d in QGuiApplication::exec () at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/gui/kernel/qguiapplication.cpp:2005 #61 0x00007f3347e3f899 in QApplication::exec () at /usr/src/debug/qt6-qtbase-6.11.1-1.fc44.x86_64/src/widgets/kernel/qapplication.cpp:2546 #62 0x0000000000402442 in main (argc=<optimized out>, argv=<optimized out>) at /home/wolki/kde/src/plasma-systemmonitor/src/main.cpp:112
> QSortFilterProxyModel: index from wrong model passed to mapToSource This line is the first error we get to see, so it's likely closer to the root cause than subsequent warnings. It gets printed by QSortFilterProxyModelPrivate::proxy_to_source(), the actual implementation of QSortFilterProxyModel::mapToSource(): https://codebrowser.dev/qt6/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp.html#544 I caught a call in gdb when it prints this. It looks like mapToSource() gets called on ProcessSortFilterModel (a subclass of QSortFilterProxyModel in plasma-systemmonitor) with an index whose model pointer refers to a ReverseColumnsProxyModel (another class in plasma-systemmonitor that indirectly derives from QSortFilterProxyModel). The stack trace looks like below - basically not very useful, except that it tells us that the call came from QV4 i.e. somewhere in executed JavaScript within a QML file. That's not terrible though, it should narrow things down to one of the few calls of mapToSource() in System Monitor's table views (ProcessTableView.qml and/or ApplicationsTableView.qml, I'm currently starting with the former). If we can figure out where this index comes from exactly and why it gets passed to the wrong proxy model, perhaps this will point us to the error. #0 QSortFilterProxyModelPrivate::proxy_to_source (this=0x5555575cc720, proxy_index=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:546 #1 QSortFilterProxyModel::mapToSource (this=0x5555576094d0, proxyIndex=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp:3334 #2 0x00007ffff4a5f649 in QAbstractProxyModel::qt_static_metacall (_o=_o@entry=0x5555576094d0, _c=_c@entry=QMetaObject::InvokeMetaMethod, _id=_id@entry=8, _a=_a@entry=0x7fffffffbde8) at /usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qabstractproxymodel.cpp:143 #3 0x00007ffff4a5f917 in QAbstractProxyModel::qt_metacall (this=0x5555576094d0, _c=<optimized out>, _id=8, _a=0x7fffffffbde8) at /usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qabstractproxymodel.cpp:207 #4 0x00007ffff4a7e12e in QSortFilterProxyModel::qt_metacall (this=0x5555576094d0, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0x7fffffffbde8) at /usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qsortfilterproxymodel.cpp:264 #5 0x00007ffff7b008cd in ProcessSortFilterModel::qt_metacall (this=0x5555576094d0, _c=QMetaObject::InvokeMetaMethod, _id=84, _a=0x7fffffffbde8) at /home/kpetso/build/kde/plasma/plasma-systemmonitor/src/table/PlasmaSystemMonitorTable_autogen/include/moc_ProcessSortFilterModel.cpp:200 #6 0x00007ffff5367363 in QQmlObjectOrGadget::metacall (this=<optimized out>, type=<optimized out>, index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/qml/qqmlobjectorgadget.cpp:15 #7 0x00007ffff51fc8db in QV4::CallMethod (object=..., index=84, returnType=..., argCount=argCount@entry=1, argTypes=0x7fffffffc148, engine=0x55555572b370, callArgs=0x7fffec2015d0, callType=QMetaObject::InvokeMetaMethod) at /usr/include/qt6/QtCore/qvarlengtharray.h:91 #8 0x00007ffff51fe708 in QV4::QObjectMethod::callPrecise (object=..., data=<optimized out>, engine=<optimized out>, callArgs=<optimized out>, callType=QMetaObject::InvokeMetaMethod) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:2094 #9 0x00007ffff5207dc5 in operator() (__closure=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:3123 #10 operator()<QV4::QObjectMethod::callInternal(const QV4::Value*, const QV4::Value*, int) const::<lambda()> > (__closure=<synthetic pointer>, call=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:3100 #11 QV4::QObjectMethod::callInternal (this=0x7fffffffc318, thisObject=<optimized out>, argv=0x7fffec201560, argc=1) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4qobjectwrapper.cpp:3123 #12 0x00007ffff52270c6 in QV4::FunctionObject::call (this=0x7fffffffc318, thisObject=0x7fffec201570, argv=0x7fffec201560, argc=1) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4functionobject_p.h:188 #13 QV4::Runtime::CallPropertyLookup::call (engine=0x55555572b370, base=..., index=<optimized out>, argv=0x7fffec201560, argc=1) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4runtime.cpp:1563 #14 0x00007fffc800052e in ??? () #15 0x00007fffec201528 in ??? () #16 0x0000000000000000 in ??? ()
It looks like this snippet in BaseTableView.qml (which both ProcessTableView and ApplicationsTableView derive from) is relevant: // FIXME Until Tableview correctly reverses its columns, see QTBUG-90547 model: root.model Binding on model { when: scrollView.LayoutMirroring.enabled value: Table.ReverseColumnsProxyModel { sourceModel: root.model } } So this replaces the actual `model` property of the BaseTableView with a ReverseColumnsProxyModel that wraps it. Then if some other JavaScript code calls mapToSource() on the original model with an index that was generated from the ReverseColumnsProxyModel, we'd get this kind of warning and a bunch of failing functionality from mapToSource() refusing to map the index.
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-systemmonitor/-/merge_requests/455
Git commit 63f848e3c32bd6ada696f7b80e8d18dfa948348e by Jakob Petsovits. Committed on 24/08/2026 at 13:59. Pushed by jpetso into branch 'master'. Fix process termination when used in RtL language Also makes icons properly appear in the Processes page. When the layout is mirrored, BaseTableView.qml replaces the original app model (or process model) with a ReverseColumnsProxyModel that wraps the original model. When calling mapToSource() on the original model with a model index that was generated for the wrapper model, QSortFilterProxyModel will refuse to map the index. This caused various warnings to be printed, and made termination fail because without a valid index, no app/process data could be retrieved either. Fix this by expecting another layer of mapping between the known sortColumnFilter (Applications) or rowFilter (Processes) model and the actual model currently in use by the TreeView. M +6 -1 src/faces/applicationstable/contents/ui/ApplicationsTableView.qml M +10 -3 src/faces/processtable/contents/ui/ProcessTableView.qml https://invent.kde.org/plasma/plasma-systemmonitor/-/commit/63f848e3c32bd6ada696f7b80e8d18dfa948348e
Git commit b1bac46f8f21414b71f19603e16d9b48e9bd5a25 by Jakob Petsovits. Committed on 24/08/2026 at 14:09. Pushed by jpetso into branch 'Plasma/6.7'. Fix process termination when used in RtL language Also makes icons properly appear in the Processes page. When the layout is mirrored, BaseTableView.qml replaces the original app model (or process model) with a ReverseColumnsProxyModel that wraps the original model. When calling mapToSource() on the original model with a model index that was generated for the wrapper model, QSortFilterProxyModel will refuse to map the index. This caused various warnings to be printed, and made termination fail because without a valid index, no app/process data could be retrieved either. Fix this by expecting another layer of mapping between the known sortColumnFilter (Applications) or rowFilter (Processes) model and the actual model currently in use by the TreeView. (cherry picked from commit 63f848e3c32bd6ada696f7b80e8d18dfa948348e) Co-authored-by: Jakob Petsovits <jpetso@petsovits.com> M +6 -1 src/faces/applicationstable/contents/ui/ApplicationsTableView.qml M +10 -3 src/faces/processtable/contents/ui/ProcessTableView.qml https://invent.kde.org/plasma/plasma-systemmonitor/-/commit/b1bac46f8f21414b71f19603e16d9b48e9bd5a25