Bug 499944 - plasmashell crashed in WallpaperItem::~WallpaperItem() after waking from sleep while trying to apply wallpaper
Summary: plasmashell crashed in WallpaperItem::~WallpaperItem() after waking from slee...
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: generic-crash (show other bugs)
Version: 6.3.0
Platform: Solus Linux
: NOR crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: regression
Depends on:
Blocks:
 
Reported: 2025-02-13 01:36 UTC by TraceyC
Modified: 2025-03-07 15:52 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.3.3
Sentry Crash Report: https://crash-reports.kde.org/organizations/kde/issues/6299


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description TraceyC 2025-02-13 01:36:35 UTC
SUMMARY
plasmashell crashed after waking from suspend while trying to reapply wallpapers

STEPS TO REPRODUCE
1. I had put the system to sleep
2. Woke the system

OBSERVED RESULT
The laptop display was blue where the wallpaper should be. The two external monitors had a black background with no panels, widgets, etc. Mouse and keyboard were responsive
plasmashell restarted

EXPECTED RESULT
normal startup

SOFTWARE/OS VERSIONS
Operating System: Solus 4.7
KDE Plasma Version: 6.3.0
KDE Frameworks Version: 6.10.0
Qt Version: 6.8.2
Kernel Version: 6.12.12-313.current (64-bit)
Graphics Platform: Wayland
Processors: 16 × 11th Gen Intel® Core™ i7-11800H @ 2.30GHz
Memory: 62.5 GiB of RAM
Graphics Processor 1: Intel® UHD Graphics
Graphics Processor 2: NVIDIA GeForce RTX 3060 Laptop GPU
Manufacturer: Dell Inc.
Product Name: XPS 17 9710

ADDITIONAL INFORMATION
Backtrace from gdb, it might be truncated


#0  __pthread_kill_implementation (threadid=<optimized out>, signo=11, no_tid=0) at pthread_kill.c:44
#1  __pthread_kill_internal (threadid=<optimized out>, signo=11) at pthread_kill.c:78
#2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=11) at pthread_kill.c:89
#3  0x00007f5a06a50316 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
#4  0x00007f5a09dbc8f4 in KCrash::defaultCrashHandler(int) () at /usr/lib/libKF6Crash.so.6
#5  0x00007f5a06a503c0 in <signal handler called> () at /usr/lib/glibc-hwcaps/x86-64-v3/libc.so.6
#6  __memcpy_evex_unaligned_erms () at ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:265
#7  0x00007f5a08dba5bb in QArrayDataPointer<QSGNode*>::reallocateAndGrow (this=0x5555b63e4340, where=<optimized out>, n=1, old=0x0)
    at /usr/include/qt6/QtCore/qarraydatapointer.h:119
#8  0x00007f5a08dba1e9 in QtPrivate::QPodArrayOps<QSGNode*>::emplace<QSGNode*&> (this=0x5555b63e4340, i=3057012784, args=<optimized out>)
    at /usr/include/qt6/QtCore/qarraydataops.h:177
#9  0x00007f5a08cd6e0c in QList<QSGNode*>::emplaceBack<QSGNode*&> (this=0x5555b63e4340, args=@0x7fff45da7440: 0x7f597c454ab0) at /usr/include/qt6/QtCore/qlist.h:897
#10 QList<QSGNode*>::append (this=0x5555b63e4340, t=0x7f597c454ab0) at /usr/include/qt6/QtCore/qlist.h:471
#11 QQuickWindowPrivate::cleanup (this=0x5555b63e4170, n=<optimized out>)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.8.2/src/quick/items/qquickwindow.cpp:906
#12 QQuickItemPrivate::derefWindow (this=0x5555b65b35f0)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.8.2/src/quick/items/qquickitem.cpp:3134
#13 0x00007f5a08cd61e4 in QQuickItem::setParentItem (this=0x5555b65b8ba0, parentItem=<optimized out>)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.8.2/src/quick/items/qquickitem.cpp:2802
#14 0x00007f5a08cd597c in QQuickItem::~QQuickItem (this=0x5555b65b8ba0)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.8.2/src/quick/items/qquickitem.cpp:2381
#15 0x00007f5a09ec0997 in WallpaperItem::~WallpaperItem (this=0x5555b65b8ba0) at ../src/plasmaquick/plasmoid/wallpaperitem.cpp:42
#16 QQmlPrivate::QQmlElement<WallpaperItem>::~QQmlElement (this=0x5555b65b8ba0) at /usr/include/qt6/QtQml/qqmlprivate.h:104
#17 QQmlPrivate::QQmlElement<WallpaperItem>::~QQmlElement (this=0x5555b65b8ba0) at /usr/include/qt6/QtQml/qqmlprivate.h:102
#18 0x00007f5a0732e0b1 in QObject::event (this=0x5555b65b8ba0, e=0x5555c995d120)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qobject.cpp:1403
#19 0x00007f5a0964d110 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5555b65b8ba0, e=0x5555c995d120)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/widgets/kernel/qapplication.cpp:3296
#20 0x00007f5a0964e353 in QApplication::notify (this=<optimized out>, receiver=0x5555b65b8ba0, e=0x5555c995d120)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/widgets/kernel/qapplication.cpp:2689
#21 0x00007f5a072d750f in QCoreApplication::notifyInternal2 (receiver=0x5555b65b8ba0, event=0x5555c995d120)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1172
#22 0x00007f5a072d8823 in QCoreApplication::sendEvent (receiver=0x5555b65b8ba0, event=<optimized out>)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1612
#23 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5555b4218ec0)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1946
#24 0x00007f5a075e342b in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1800
--Type <RET> for more, q to quit, c to continue without paging--c\
#25 postEventSourceDispatch (s=0x5555b431ace0) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#26 0x00007f5a05e10288 in g_main_dispatch (context=0x7f59f4000f20) at ../glib/gmain.c:3357
#27 0x00007f5a05e9c01a in g_main_context_dispatch_unlocked (context=0x7f59f4000f20) at ../glib/gmain.c:4208
#28 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7f59f4000f20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4273
#29 0x00007f5a05e0ea74 in g_main_context_iteration (context=0x7f59f4000f20, may_block=1) at ../glib/gmain.c:4338
#30 0x00007f5a075e2d06 in QEventDispatcherGlib::processEvents (this=0x5555b4296ff0, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#31 0x00007f5a072e2936 in QEventLoop::processEvents (this=0x7fff45da7b20, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qeventloop.cpp:103
#32 QEventLoop::exec (this=0x7fff45da7b20, flags=...) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qeventloop.cpp:185
#33 0x00007f5a072d7d5e in QCoreApplication::exec () at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1515
#34 0x00005555b34d17b7 in main (argc=2, argv=0x7fff45da7e28) at ../shell/main.cpp:191
Comment 1 TraceyC 2025-02-17 18:49:21 UTC
This happened again today. This backtrace isn't truncated

[New LWP 263572]

warning: .dynamic section for "/usr/lib/glibc-hwcaps/x86-64-v3/libz.so.1" is not at the expected address (wrong library or version mismatch?)
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib64/libthread_db.so.1".
Core was generated by `/usr/bin/plasmashell --no-respawn'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=11, no_tid=0) at pthread_kill.c:44

warning: 44     pthread_kill.c: No such file or directory
[Current thread is 1 (Thread 0x7f1332f6ea00 (LWP 177601))]
(gdb) bt
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=11, no_tid=0) at pthread_kill.c:44
#1  __pthread_kill_internal (threadid=<optimized out>, signo=11) at pthread_kill.c:78
#2  __GI___pthread_kill (threadid=<optimized out>, signo=signo@entry=11) at pthread_kill.c:89
#3  0x00007f1338e50316 in __GI_raise (sig=11) at ../sysdeps/posix/raise.c:26
#4  0x00007f133c1dd8f4 in KCrash::defaultCrashHandler(int) () at /usr/lib/libKF6Crash.so.6
#5  0x00007f1338e503c0 in <signal handler called> () at /usr/lib/glibc-hwcaps/x86-64-v3/libc.so.6
#6  QQuickItemPrivate::derefWindow (this=0x564400c65090) at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.8.2/src/quick/items/qquickitem.cpp:3128
#7  0x00007f133b0d61e4 in QQuickItem::setParentItem (this=0x5643f2f66060, parentItem=<optimized out>)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.8.2/src/quick/items/qquickitem.cpp:2802
#8  0x00007f133b0d597c in QQuickItem::~QQuickItem (this=0x5643f2f66060)
    at /home/build/YPKG/root/qt6-declarative/build/qtdeclarative-everywhere-src-6.8.2/src/quick/items/qquickitem.cpp:2381
#9  0x00007f133c2e1997 in WallpaperItem::~WallpaperItem (this=0x5643f2f66060) at ../src/plasmaquick/plasmoid/wallpaperitem.cpp:42
#10 QQmlPrivate::QQmlElement<WallpaperItem>::~QQmlElement (this=0x5643f2f66060) at /usr/include/qt6/QtQml/qqmlprivate.h:104
#11 QQmlPrivate::QQmlElement<WallpaperItem>::~QQmlElement (this=0x5643f2f66060) at /usr/include/qt6/QtQml/qqmlprivate.h:102
#12 0x00007f133972e0b1 in QObject::event (this=0x5643f2f66060, e=0x5643f8f52430) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qobject.cpp:1403
#13 0x00007f133ba4d110 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x5643f2f66060, e=0x5643f8f52430)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/widgets/kernel/qapplication.cpp:3296
#14 0x00007f133ba4e353 in QApplication::notify (this=<optimized out>, receiver=0x5643f2f66060, e=0x5643f8f52430)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/widgets/kernel/qapplication.cpp:2689
#15 0x00007f13396d750f in QCoreApplication::notifyInternal2 (receiver=0x5643f2f66060, event=0x5643f8f52430)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1172
#16 0x00007f13396d8823 in QCoreApplication::sendEvent (receiver=0x5643f2f66060, event=<optimized out>)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1612
#17 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x5643edb86ec0)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1946
#18 0x00007f13399e342b in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1800
#19 postEventSourceDispatch (s=0x5643edccecf0) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qeventdispatcher_glib.cpp:246
--Type <RET> for more, q to quit, c to continue without paging--[
#20 0x00007f1338246288 in g_main_dispatch (context=0x7f1328000f20) at ../glib/gmain.c:3357
#21 0x00007f13382d201a in g_main_context_dispatch_unlocked (context=0x7f1328000f20) at ../glib/gmain.c:4208
#22 g_main_context_iterate_unlocked.isra.0 (context=context@entry=0x7f1328000f20, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4273
#23 0x00007f1338244a74 in g_main_context_iteration (context=0x7f1328000f20, may_block=1) at ../glib/gmain.c:4338
#24 0x00007f13399e2d06 in QEventDispatcherGlib::processEvents (this=0x5643edc04ff0, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qeventdispatcher_glib.cpp:399
#25 0x00007f13396e2936 in QEventLoop::processEvents (this=0x7ffc8a494580, flags=...)
    at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qeventloop.cpp:103
#26 QEventLoop::exec (this=0x7ffc8a494580, flags=...) at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qeventloop.cpp:185
#27 0x00007f13396d7d5e in QCoreApplication::exec () at /home/build/YPKG/root/qt6-base/build/qtbase-everywhere-src-6.8.2/src/corelib/kernel/qcoreapplication.cpp:1515
Comment 2 Fushan Wen 2025-02-19 00:14:36 UTC
Cannot reproduce
Comment 3 Nate Graham 2025-03-05 22:14:02 UTC
The thing you saw when the system woke from sleep... was it the lock screen (which can have wallpapers on it) or the desktop (because the screen didn't lock)?
Comment 5 TraceyC 2025-03-07 14:53:27 UTC
(In reply to Nate Graham from comment #3)
> The thing you saw when the system woke from sleep... was it the lock screen
> (which can have wallpapers on it) or the desktop (because the screen didn't
> lock)?

May apologies, I missed a step. 
3. Logged in

After I woke the system and logged in, I saw the blank backgrounds instead of the the wallpapers set for the displays
Comment 6 Fushan Wen 2025-03-07 15:35:53 UTC
Git commit 027b9180038ddfddf712a8123da54bfc223a8691 by Fushan Wen.
Committed on 07/03/2025 at 14:47.
Pushed by ngraham into branch 'master'.

ContainmentItem: delete wallpaper item immediately to fix crash

When ContainmentItem receives ItemSceneChange, the window might
be destroyed soon. However, if deleteLater is used, the window might be
destroyed before the wallpaper item, but the wallpaper item still
accesses the dangling window in its dtor, which causes a crash.
SENTRY: PLASMA-WORKSPACE-1Y5
FIXED-IN: 6.3.3

M  +1    -1    src/plasmaquick/plasmoid/containmentitem.cpp

https://invent.kde.org/plasma/libplasma/-/commit/027b9180038ddfddf712a8123da54bfc223a8691
Comment 7 Nate Graham 2025-03-07 15:52:18 UTC
Git commit 8b0dbd82c7a69893371626b57806edecba1ae31a by Nate Graham.
Committed on 07/03/2025 at 15:36.
Pushed by ngraham into branch 'Plasma/6.3'.

ContainmentItem: delete wallpaper item immediately to fix crash

When ContainmentItem receives ItemSceneChange, the window might
be destroyed soon. However, if deleteLater is used, the window might be
destroyed before the wallpaper item, but the wallpaper item still
accesses the dangling window in its dtor, which causes a crash.
SENTRY: PLASMA-WORKSPACE-1Y5
FIXED-IN: 6.3.3


(cherry picked from commit 027b9180038ddfddf712a8123da54bfc223a8691)

Co-authored-by: Fushan Wen <qydwhotmail@gmail.com>

M  +1    -1    src/plasmaquick/plasmoid/containmentitem.cpp

https://invent.kde.org/plasma/libplasma/-/commit/8b0dbd82c7a69893371626b57806edecba1ae31a