Bug 460895 - plasmashell process uses all available RAM and several UI elements freeze
Summary: plasmashell process uses all available RAM and several UI elements freeze
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-performance (show other bugs)
Version: 5.26.1
Platform: Arch Linux Linux
: NOR major
Target Milestone: 1.0
Assignee: Fushan Wen
URL:
Keywords: regression
: 462047 466395 (view as bug list)
Depends on:
Blocks:
 
Reported: 2022-10-23 11:38 UTC by kdebug
Modified: 2023-06-19 14:38 UTC (History)
4 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
system monitor photo (53.41 KB, image/jpeg)
2022-10-23 11:38 UTC, kdebug
Details
backtrace when freezed.txt (43.16 KB, text/x-log)
2022-11-13 13:06 UTC, Fushan Wen
Details

Note You need to log in before you can comment on or make changes to this bug.
Description kdebug 2022-10-23 11:38:28 UTC
Created attachment 153138 [details]
system monitor photo

SUMMARY
Apparently at random times (the frequency is more or less once a day, but some days it doesn't happen, some days it happens multiple times), almost all UI elements freeze. What freezes isn't always the same, but most of the times the only UI element still updating is the mouse.

The only ways I have managed to exit this situation are either doing a forced shutdown, or switching to a tty, logging as root and killing all processes of my user. After that, if I switch back, I just get greeted by SDDM and everything works again.

Today the problem happened again, but while the taskbar and the application launcher were completely frozen, most opened windows were still responding and some keyboard shortcuts were still working. I managed to open the system monitor, and plasmashell was occupying 7/8 GB of RAM (the maximum available for it). I also run journalctl -b0 -f in a terminal, and it was spamming "Binding loop detected for property" messages.

STEPS TO REPRODUCE
Not sure, there could be a correlation with screen reactivation after it deactivates for battery saving, but it's just a guess.

SOFTWARE/OS VERSIONS
Linux Version: 6.0.2-arch1-1 (64-bit)
KDE Plasma Version: 5.26.1
KDE Frameworks Version: 5.99.0
Qt Version: 5.15.6
Comment 2 Bug Janitor Service 2022-10-23 13:50:25 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2254
Comment 3 Fushan Wen 2022-10-24 16:17:16 UTC
Git commit 8876194c7bc34ba321b7e794340102d06b04e231 by Fushan Wen.
Committed on 24/10/2022 at 16:16.
Pushed by fusionfuture into branch 'master'.

Revert "applets/notifications: allow screen reader to read notification body in FullRepresentation"

This reverts commit f3ab856a21a6fbc472242d79a0128618e8356ec2.

M  +6    -33   applets/notifications/package/contents/ui/NotificationItem.qml
M  +0    -3    applets/notifications/package/contents/ui/SelectableLabel.qml

https://invent.kde.org/plasma/plasma-workspace/commit/8876194c7bc34ba321b7e794340102d06b04e231
Comment 4 Fushan Wen 2022-10-25 01:03:15 UTC
Git commit 80c5928fa2a26503dd28a4766c14148815884be7 by Fushan Wen.
Committed on 25/10/2022 at 01:03.
Pushed by fusionfuture into branch 'Plasma/5.26'.

Revert "applets/notifications: allow screen reader to read notification body in FullRepresentation"

This reverts commit f3ab856a21a6fbc472242d79a0128618e8356ec2.


(cherry picked from commit 8876194c7bc34ba321b7e794340102d06b04e231)

M  +6    -33   applets/notifications/package/contents/ui/NotificationItem.qml
M  +0    -3    applets/notifications/package/contents/ui/SelectableLabel.qml

https://invent.kde.org/plasma/plasma-workspace/commit/80c5928fa2a26503dd28a4766c14148815884be7
Comment 5 Fushan Wen 2022-10-29 01:56:06 UTC

*** This bug has been marked as a duplicate of bug 461132 ***
Comment 6 Fushan Wen 2022-11-08 13:54:43 UTC
I can also sometimes reproduce it. plasmashell was usually stuck at QMimeXMLProvider::addMagicMatcher
Comment 7 Fushan Wen 2022-11-13 13:06:22 UTC
Created attachment 153709 [details]
backtrace when freezed.txt

#0  std::__atomic_base<QObject*>::load(std::memory_order) const (__m=<optimized out>, this=<optimized out>) at kernel/qobject.cpp:3522
#1  std::atomic<QObject*>::load(std::memory_order) const (__m=<optimized out>, this=<optimized out>) at /usr/include/c++/12/atomic:579
#2  QAtomicOps<QObject*>::loadRelaxed<QObject*>(std::atomic<QObject*> const&) (_q_value=<optimized out>) at ../../include/QtCore/../../src/corelib/thread/qatomic_cxx11.h:239
#3  QBasicAtomicPointer<QObject>::loadRelaxed() const (this=<optimized out>) at ../../include/QtCore/../../src/corelib/thread/qbasicatomic.h:248
#4  QMetaObjectPrivate::disconnectHelper(QObjectPrivate::ConnectionData*, int, QObject const*, int, void**, QBasicMutex*, QMetaObjectPrivate::DisconnectType) (disconnectType=QMetaObjectPrivate::DisconnectAll, senderMutex=0x7fd0f51c00e0 <_q_ObjectMutexPool+704>, slot=0x0, method_index=-1, receiver=0x174bd54c0, signalIndex=<optimized out>, connections=0x2225810) at kernel/qobject.cpp:3521
#5  QMetaObjectPrivate::disconnect(QObject const*, int, QMetaObject const*, QObject const*, int, void**, QMetaObjectPrivate::DisconnectType) (sender=0x220b410, signal_index=-1, smeta=0x7fd0f5909e80 <QScreen::staticMetaObject>, receiver=0x174bd54c0, method_index=-1, disconnectType=QMetaObjectPrivate::DisconnectAll, slot=0x0) at kernel/qobject.cpp:3577
#6  0x00007fd0f4f0ab3d in QObject::disconnect(QObject const*, char const*, QObject const*, char const*) (sender=sender@entry=0x220b410, signal=signal@entry=0x0, receiver=receiver@entry=0x174bd54c0, method=method@entry=0x0) at kernel/qobject.cpp:3161
#7  0x00007fd0f7121030 in QObject::disconnect(QObject const*, char const*) const (member=0x0, receiver=0x174bd54c0, this=0x220b410) at /usr/include/qt5/QtCore/qobject.h:359
#8  QQuickScreenInfo::setWrappedScreen(QScreen*) (this=this@entry=0x174bd54c0, screen=0x0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickscreen.cpp:366
#9  0x00007fd0f7121c1a in QQuickScreenAttached::screenChanged(QScreen*) (this=0x174bd54c0, screen=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickscreen.cpp:485
#10 0x00007fd0f708311c in QQuickItemPrivate::derefWindow() (this=0x174b62b60) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3138
#11 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=0x174b604a0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#12 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=0x174895260) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#13 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=0x174b85ab0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#14 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=0x174b85830) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#15 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=0x174894330) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#16 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=0x174af6a60) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#17 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=0x174b47810) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#18 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=0x174b0d0b0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#19 0x00007fd0f70830dd in QQuickItemPrivate::derefWindow() (this=this@entry=0x174b36cb0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:3132
#20 0x00007fd0f70838da in QQuickItem::setParentItem(QQuickItem*) (this=0x174ad38e0, parentItem=parentItem@entry=0x0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitem.cpp:2789
#21 0x00007fd0f7144047 in QQuickItemView::destroyingItem(QObject*) (this=<optimized out>, object=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitemview.cpp:2424
#22 0x00007fd0f4f1354c in doActivate<false>(QObject*, int, void**) (sender=0x6c36a00, signal_index=7, argv=0x7fff85257900) at kernel/qobject.cpp:3931
#23 0x00007fd0f4f0c74f in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=<optimized out>, m=m@entry=0x7fd0f7560c40 <QQmlInstanceModel::staticMetaObject>, local_signal_index=local_signal_index@entry=4, argv=argv@entry=0x7fff85257900) at kernel/qobject.cpp:3979
#24 0x00007fd0f75021d2 in QQmlInstanceModel::destroyingItem(QObject*) (this=<optimized out>, _t1=<optimized out>) at .moc/moc_qqmlobjectmodel_p.cpp:284
#25 0x00007fd0f752d4a9 in QQmlDelegateModelPrivate::emitDestroyingItem(QObject*) (item=<optimized out>, this=0x5fa5f40) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/qmlmodels/qqmldelegatemodel_p_p.h:305
#26 QQmlDelegateModelPrivate::destroyCacheItem(QQmlDelegateModelItem*) (this=0x5fa5f40, cacheItem=0x16dbc64d0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/qmlmodels/qqmldelegatemodel.cpp:643
#27 0x00007fd0f752ec0e in QQmlDelegateModelPrivate::release(QObject*, QQmlInstanceModel::ReusableFlag) (this=0x5fa5f40, object=<optimized out>, reusableFlag=QQmlInstanceModel::NotReusable) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/qmlmodels/qqmldelegatemodel.cpp:637
#28 0x00007fd0f752eca2 in QQmlDelegateModelPrivate::release(QObject*, QQmlInstanceModel::ReusableFlag) (reusableFlag=<optimized out>, object=<optimized out>, this=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/qmlmodels/qqmldelegatemodel.cpp:656
#29 QQmlDelegateModel::release(QObject*, QQmlInstanceModel::ReusableFlag) (this=<optimized out>, item=<optimized out>, reusableFlag=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/qmlmodels/qqmldelegatemodel.cpp:658
#30 0x00007fd0f7144792 in QQuickItemViewPrivate::releaseItem(FxViewItem*, QQmlInstanceModel::ReusableFlag) (this=this@entry=0x6c35420, item=0x174c35c60, reusableFlag=QQmlInstanceModel::NotReusable) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitemview.cpp:2456
#31 0x00007fd0f71592ae in QQuickListViewPrivate::releaseItem(FxViewItem*, QQmlInstanceModel::ReusableFlag) (reusableFlag=<optimized out>, item=<optimized out>, this=0x6c35420) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquicklistview.cpp:740
#32 QQuickListViewPrivate::releaseItem(FxViewItem*, QQmlInstanceModel::ReusableFlag) (this=0x6c35420, item=<optimized out>, reusableFlag=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquicklistview.cpp:732
#33 0x00007fd0f71545e8 in QQuickListViewPrivate::removeNonVisibleItems(double, double) (this=0x6c35420, bufferFrom=-328, bufferTo=312) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquicklistview.cpp:877
#34 0x00007fd0f714521e in QQuickItemViewPrivate::refill(double, double) (this=0x6c35420, from=-8, to=-8) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitemview.cpp:1802
#35 0x00007fd0f7146073 in QQuickItemViewPrivate::layout() (this=0x6c35420) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickitemview.cpp:1920
#36 0x00007fd0f70990d2 in QQuickWindowPrivate::polishItems() (this=0x2d201f0) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickwindow.cpp:393
#37 0x00007fd0f703a4ad in QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window*, bool) (this=0x2b95730, w=0x5c60640, inExpose=<optimized out>) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/scenegraph/qsgthreadedrenderloop.cpp:1576
#38 0x00007fd0f70a6390 in QQuickWindow::event(QEvent*) (this=0x7fd08c025880, e=0x7fff85257f60) at /usr/src/debug/qtdeclarative-everywhere-src-5.15.7+kde18/src/quick/items/qquickwindow.cpp:1863
#39 0x00007fd0f5da53fe in QApplicationPrivate::notify_helper(QObject*, QEvent*) (this=<optimized out>, receiver=0x7fd08c025880, e=0x7fff85257f60) at kernel/qapplication.cpp:3637
#40 0x00007fd0f4edc128 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fd08c025880, event=0x7fff85257f60) at kernel/qcoreapplication.cpp:1064
#41 0x00007fd0f536ac03 in QPlatformWindow::deliverUpdateRequest() (this=<optimized out>) at kernel/qplatformwindow.cpp:796
#42 QPlatformWindow::windowEvent(QEvent*) (this=<optimized out>, event=<optimized out>) at kernel/qplatformwindow.cpp:476
#43 0x00007fd0f5dac639 in QApplication::notify(QObject*, QEvent*) (this=0x7fff85258530, receiver=0x7fd08c025880, e=0x7fff852581c0) at kernel/qapplication.cpp:2879
#44 0x00007fd0f4edc128 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x7fd08c025880, event=0x7fff852581c0) at kernel/qcoreapplication.cpp:1064
#45 0x00007fd0f4f32f51 in QTimerInfoList::activateTimers() (this=0x223f680) at kernel/qtimerinfo_unix.cpp:643
#46 0x00007fd0f4f337e4 in timerSourceDispatch(GSource*, GSourceFunc, gpointer) (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:183
#47 0x00007fd0f346da90 in g_main_dispatch (context=0x7fd0ec005010) at ../glib/gmain.c:3444
#48 g_main_context_dispatch (context=context@entry=0x7fd0ec005010) at ../glib/gmain.c:4162
#49 0x00007fd0f346de48 in g_main_context_iterate (context=context@entry=0x7fd0ec005010, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4238
#50 0x00007fd0f346dedc in g_main_context_iteration (context=0x7fd0ec005010, may_block=1) at ../glib/gmain.c:4303
#51 0x00007fd0f4f33b56 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x223f4b0, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#52 0x00007fd0f4edab9b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fff85258400, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#53 0x00007fd0f4ee2d06 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#54 0x00007fd0f536ee4c in QGuiApplication::exec() () at kernel/qguiapplication.cpp:1870
#55 0x00007fd0f5da5375 in QApplication::exec() () at kernel/qapplication.cpp:2829
#56 0x00000000004248c6 in main(int, char**) (argc=<optimized out>, argv=<optimized out>) at /mnt/data/home/qydw/Develop/KDE/Plasma/plasma-workspace/shell/main.cpp:235
Comment 8 Bug Janitor Service 2022-11-13 16:15:28 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/2326
Comment 9 Fushan Wen 2022-11-15 01:25:43 UTC
Git commit 961bdc3e465abc197cc6bdc0c99f6cfaf3633834 by Fushan Wen.
Committed on 15/11/2022 at 01:24.
Pushed by fusionfuture into branch 'master'.

applets/notifications: unload ListView when plasmoid is not expanded

This makes the widget more efficient, as there is no need to update
the ListView when the full representation is hidden.

M  +1    -1    applets/notifications/package/contents/ui/FullRepresentation.qml

https://invent.kde.org/plasma/plasma-workspace/commit/961bdc3e465abc197cc6bdc0c99f6cfaf3633834
Comment 10 Fushan Wen 2022-11-15 08:32:13 UTC
Git commit 37be022bf2ebd50edaf4144a3b070ff6a8c93feb by Fushan Wen.
Committed on 15/11/2022 at 08:32.
Pushed by fusionfuture into branch 'Plasma/5.26'.

applets/notifications: unload ListView when plasmoid is not expanded

This makes the widget more efficient, as there is no need to update
the ListView when the full representation is hidden.


(cherry picked from commit 961bdc3e465abc197cc6bdc0c99f6cfaf3633834)

M  +1    -1    applets/notifications/package/contents/ui/FullRepresentation.qml

https://invent.kde.org/plasma/plasma-workspace/commit/37be022bf2ebd50edaf4144a3b070ff6a8c93feb
Comment 11 Fushan Wen 2022-11-20 09:43:21 UTC
*** Bug 462047 has been marked as a duplicate of this bug. ***
Comment 12 Fushan Wen 2022-12-18 01:34:26 UTC
Should be worked around now
Comment 13 Fushan Wen 2023-06-19 14:38:47 UTC
*** Bug 466395 has been marked as a duplicate of this bug. ***