Bug 463023

Summary: An unknown notification is inexplicably freezing my Plasma shell; logs attached
Product: [Plasma] plasmashell Reporter: mv.horizonv
Component: NotificationsAssignee: Plasma Bugs List <plasma-bugs-null>
Status: RESOLVED UPSTREAM    
Severity: crash CC: kde, nate, perso
Priority: NOR    
Version First Reported In: 5.26.4   
Target Milestone: 1.0   
Platform: Arch Linux   
OS: Linux   
URL: https://gitlab.freedesktop.org/mesa/mesa/-/issues/7624
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description mv.horizonv 2022-12-13 22:20:29 UTC
SUMMARY

An unknown notification is inexplicably freezing my Plasma shell; logs attached

Plasma is totally and indefinitely freezing when I receive this notification. I can't find similar problems by searching the element that I suspect causes the bug on the Internet. It happens frequently, 0 to 2 times a day and it is really frustrating and annoying since it forces me to stop without saving any process currently running on the machine.

STEPS TO REPRODUCE
1. Use KDE Plasma.
2. Receive an undetermined notification.

OBSERVED RESULT

KDE Plasma is eternally freezing and I have to terminate my session through the console on another tty. I can control the desktop with my mouse and my keyboard, but the visual output is frozen so I can't see what I'm doing.
When it happens, the notification received is just black, like an empty window with composition disabled, and approximately 2 seconds after, the freeze occurs. I checked the logs with journactl every time it happened to see if particular messages are redundant, and there are. I copy-pasted under ADDITIONAL INFORMATION the lines wrote in the logs when the bug occurs.

EXPECTED RESULT

Plasma should not freeze like this.

SOFTWARE/OS VERSIONS
Linux kernel: 6.0.12-arch1-1
KDE Plasma Version: KDE Plasma 5.26.4
KDE Frameworks Version: 5.101.0
Qt Version: 5.15.17

ADDITIONAL INFORMATION

Logs associated to the bug:

déc. 12 22:40:23 AHRC-PC plasmashell[6979]: Could not find the Plasmoid for Plasma::FrameSvgItem(0x559b74765360) QQmlContext(0x559b7180d0e0) QUrl("file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/global/Globals.qml")
déc. 12 22:40:23 AHRC-PC plasmashell[6979]: Could not find the Plasmoid for Plasma::FrameSvgItem(0x559b74765360) QQmlContext(0x559b7180d0e0) QUrl("file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/global/Globals.qml")
déc. 12 22:40:23 AHRC-PC plasmashell[6979]: file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:222:21: QML SelectableLabel: Binding loop detected for property "implicitWidth"
déc. 12 22:40:23 AHRC-PC plasmashell[6979]: file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:222:21: QML SelectableLabel: Binding loop detected for property "implicitWidth"
déc. 12 22:40:23 AHRC-PC plasmashell[6979]: file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:222:21: QML SelectableLabel: Binding loop detected for property "implicitHeight"
Comment 1 Celeste Wouters 2022-12-29 14:52:19 UTC
Happens to me as well.

Distribution: Void Linux
Linux kernel: 5.15.82_1
KDE Plasma Version: KDE Plasma 5.26.3
KDE Frameworks Version: 5.100.0
Qt Version: 5.15.17
DE/server/GPU: Plasma on kwin-x11 on amdgpu

It seems some threaded condition variable is never signalled (race condition?) when a QExposeEvent is fired after the notification is created and shown:

#0  __futex_abstimed_wait_common64 (private=0, cancel=true, abstime=0x0, op=393, expected=0, futex_word=0x55a5ccf36924) at futex-internal.c:57
#1  __futex_abstimed_wait_common (futex_word=futex_word@entry=0x55a5ccf36924, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0, cancel=cancel@entry=true)
    at futex-internal.c:87
#2  0x00007fbbd2b0f6db in __GI___futex_abstimed_wait_cancelable64 (futex_word=futex_word@entry=0x55a5ccf36924, expected=expected@entry=0, clockid=clockid@entry=0, abstime=abstime@entry=0x0, private=private@entry=0)
    at futex-internal.c:139
#3  0x00007fbbd2b11e90 in __pthread_cond_wait_common (abstime=0x0, clockid=0, mutex=0x55a5ccf368d0, cond=0x55a5ccf368f8) at pthread_cond_wait.c:503
#4  ___pthread_cond_wait (cond=cond@entry=0x55a5ccf368f8, mutex=mutex@entry=0x55a5ccf368d0) at pthread_cond_wait.c:618
#5  0x00007fbbd2ffa03b in QWaitConditionPrivate::wait (deadline=..., deadline=..., this=0x55a5ccf368d0) at thread/qwaitcondition_unix.cpp:146
#6  QWaitCondition::wait (this=<optimized out>, mutex=0x55a5cc68fac8, deadline=...) at thread/qwaitcondition_unix.cpp:225
#7  0x00007fbbd4ba9c1a in QSGThreadedRenderLoop::polishAndSync (this=this@entry=0x55a5c8a59380, w=w@entry=0x7fbbc001e740, inExpose=inExpose@entry=true)
    at ../../../qtbase/include/QtCore/../../src/corelib/kernel/qdeadlinetimer.h:68
#8  0x00007fbbd4baade2 in QSGThreadedRenderLoop::handleExposure (this=0x55a5c8a59380, window=<optimized out>) at scenegraph/qsgthreadedrenderloop.cpp:1374
#9  0x00007fbbd3615fc5 in QWindow::event (this=0x55a5cd30d3e0, ev=<optimized out>) at kernel/qwindow.cpp:2450
#10 0x00007fbbd3eff20f in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55a5cd30d3e0, e=0x7fffba3572e0) at kernel/qapplication.cpp:3637
#11 0x00007fbbd31d699a in QCoreApplication::notifyInternal2 (receiver=0x55a5cd30d3e0, event=0x7fffba3572e0) at kernel/qcoreapplication.cpp:1064
#12 0x00007fbbd360b1dd in QGuiApplicationPrivate::processExposeEvent (e=0x7fbbc0025c80) at kernel/qguiapplication.cpp:3261
#13 0x00007fbbd35de7bc in QWindowSystemInterface::sendWindowSystemEvents (flags=flags@entry=...) at kernel/qwindowsysteminterface.cpp:1169
#14 0x00007fbbce96131a in xcbSourceDispatch (source=<optimized out>) at qxcbeventdispatcher.cpp:105
#15 0x00007fbbd134bb2b in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#16 0x00007fbbd134bdd8 in ?? () from /usr/lib/libglib-2.0.so.0
#17 0x00007fbbd134be8f in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#18 0x00007fbbd322e5cf in QEventDispatcherGlib::processEvents (this=0x55a5c8421f60, flags=...) at kernel/qeventdispatcher_glib.cpp:423
#19 0x00007fbbd31d533b in QEventLoop::exec (this=this@entry=0x7fffba357550, flags=..., flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:69
#20 0x00007fbbd31dd5d0 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:121
#21 0x00007fbbd35fd3ac in QGuiApplication::exec () at kernel/qguiapplication.cpp:1870
#22 0x00007fbbd3eff185 in QApplication::exec () at kernel/qapplication.cpp:2829
#23 0x000055a5c78fb8c9 in main (argc=<optimized out>, argv=0x7fffba357680) at ../shell/main.cpp:233
(gdb) f 10
#10 0x00007fbbd3eff20f in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x55a5cd30d3e0, e=0x7fffba3572e0) at kernel/qapplication.cpp:3637
3637    kernel/qapplication.cpp: No such file or directory.
(gdb) p *e
$1 = {_vptr.QEvent = 0x7fbbd3b8a540 <vtable for QExposeEvent+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0x7fbbd339f1c0 <qt_meta_stringdata_QEvent>, data = 0x7fbbd339ec00 <qt_meta_data_QEvent>, 
      static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 206, posted = 0, spont = 1, m_accept = 1, reserved = 0}

PLASMA LOG TAIL
Could not find the Plasmoid for Plasma::FrameSvgItem(0x55a5ca4878f0) QQmlContext(0x55a5c9a42820) QUrl("file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/global/Globals.qml")
Could not find the Plasmoid for Plasma::FrameSvgItem(0x55a5ca4878f0) QQmlContext(0x55a5c9a42820) QUrl("file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/global/Globals.qml")
file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:221:21: QML SelectableLabel: Binding loop detected for property "implicitWidth"
file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:221:21: QML SelectableLabel: Binding loop detected for property "implicitWidth"
file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:221:21: QML SelectableLabel: Binding loop detected for property "implicitHeight"
file:///usr/share/plasma/plasmoids/org.kde.plasma.private.systemtray/contents/ui/ExpandedRepresentation.qml:162: TypeError: Cannot read property 'text' of null
file:///usr/share/plasma/plasmoids/org.kde.plasma.networkmanagement/contents/ui/ConnectionItem.qml:45:32: QML Action: Accessible must be attached to an Item
file:///usr/share/plasma/plasmoids/org.kde.plasma.networkmanagement/contents/ui/ConnectionItem.qml:45:32: QML Action: Accessible must be attached to an Item
Could not find the Plasmoid for Plasma::FrameSvgItem(0x55a5cc214340) QQmlContext(0x55a5c9a42820) QUrl("file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/global/Globals.qml")
Could not find the Plasmoid for Plasma::FrameSvgItem(0x55a5cc214340) QQmlContext(0x55a5c9a42820) QUrl("file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/global/Globals.qml")
file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:221:21: QML SelectableLabel: Binding loop detected for property "implicitWidth"
file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:221:21: QML SelectableLabel: Binding loop detected for property "implicitWidth"
file:///usr/share/plasma/plasmoids/org.kde.plasma.notifications/contents/ui/NotificationItem.qml:221:21: QML SelectableLabel: Binding loop detected for property "implicitHeight"
console.warn: LoginRecipes: "Falling back to a synchronous message for: https://duckduckgo.com."
console.warn: LoginRecipes: "Falling back to a synchronous message for: https://duckduckgo.com."
console.warn: LoginRecipes: "Falling back to a synchronous message for: https://duckduckgo.com."
Extension error: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIDOMWindowUtils.addSheet]"  nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)"  location: "JS frame :: resource://gre/modules/ExtensionCommon.jsm :: runSafeSyncWithoutClone :: line 71"  data: no] undefined 71
[[Exception stack
runSafeSyncWithoutClone@resource://gre/modules/ExtensionCommon.jsm:71:12
inject/cssPromise<@resource://gre/modules/ExtensionContent.jsm:538:36
Current stack
runSafeSyncWithoutClone@resource://gre/modules/ExtensionCommon.jsm:77:9
inject/cssPromise<@resource://gre/modules/ExtensionContent.jsm:538:36
]]
Comment 2 Nate Graham 2023-01-06 21:22:41 UTC
Unfortunately this is a regression in the AMD graphics drivers. See https://gitlab.freedesktop.org/mesa/mesa/-/issues/7624