https://bugs.kde.org/show_bug.cgi?id=523180
Bug ID: 523180
Summary: Plasmashell goes into crash loop when resuming from
standby
Classification: Plasma
Product: plasmashell
Version First 6.6.5
Reported In:
Platform: Slackware
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: general
Assignee: [email protected]
Reporter: [email protected]
CC: [email protected]
Target Milestone: 1.0
Created attachment 194377
--> https://bugs.kde.org/attachment.cgi?id=194377&action=edit
01-gdb-backtrace
DESCRIPTION
There seems to be a bug, similar symptoms but probably different cause to bug
https://bugs.kde.org/show_bug.cgi?id=501086
Plasmashell goes into a crash loop sometimes when I turn on my laptop again
after being in standby.
STEPS TO REPRODUCE
1. Use my laptop for a while
2. put laptop in standby
3. resume from standby and type password in
4. plasmashell appears for a bit and then crashes, and does that for several
times until it gives up.
SIGSEGV
I thought it might have been the Fokus plasmoid but removing that has made no
change to this issue
SOFTWARE/OS VERSIONS
Operating System (available in the Info Center app, or by running `kinfo` in a
terminal window):
Operating System: NixOS 26.05
KDE Plasma Version: 6.6.5
KDE Frameworks Version: 6.26.0
Qt Version: 6.11.1
Kernel Version: 6.18.37 (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 7840U w/ Radeon 780M Graphics
Memory: 64 GiB of RAM (60,6 GiB usable)
Graphics Processor: AMD Radeon 780M Graphics
Manufacturer: Framework
Product Name: Laptop 13 (AMD Ryzen 7040Series)
System Version: A7
ADDITIONAL INFORMATION
DISCLAIMER: EVERYTHING AFTER THIS IS CREATED BY AN LLM FOR WHAT IT THINKS MIGHT
BE THE CAUSE
so .... take it with a bucket of salt.
## Trigger
Crash happens on resume from suspend (lid open). It does not happen on
a fresh boot. Reproduced multiple times across reboots.
## Crash signature
The crash is a null pointer dereference inside Qt's text layout code,
triggered while painting a QLabel:
```
#7 QTextDocument::d_func (this=0x0) ← null this
at qtextdocument.h:297
#8 QTextDocumentPrivate::get (document=0x0) ← null document
at qtextdocument_p.h:275
#9 QTextDocumentPrivate::get (object=0x...)
at qtextdocument_p.h:295
#10 QTextFrame::begin (this=0x...)
at qtextobject.cpp:589
#11 QTextDocumentLayoutPrivate::layoutFrame(...)
at qtextdocumentlayout.cpp:3028
#12 QTextDocumentLayoutPrivate::layoutFrame(...)
at qtextdocumentlayout.cpp:2919
#13 QTextDocumentLayout::doLayout(...)
at qtextdocumentlayout.cpp:3838
#14 QTextDocumentLayout::documentChanged(...)
at qtextdocumentlayout.cpp:3801
#15 QTextDocumentPrivate::clear(...)
at qtextdocument_p.cpp:251
#16 QTextDocument::setPlainText(...)
at qtextdocument.cpp:1271
#17 QLabelPrivate::ensureTextPopulated(...)
at qlabel.cpp:1507
#22 QLabel::paintEvent(...)
at qlabel.cpp:1006
```
The paint is triggered by a Wayland expose event on resume:
```
#46 QWindowSystemInterface::handleExposeEvent(...)
#47 QtWaylandClient::QWaylandWindow::sendExposeEvent(...)
#48 QtWaylandClient::QWaylandWindow::updateExposure()
```
Immediately before the crash, the journal shows a thread-safety
violation in the Breeze widget style engine:
```
plasmashell: QObject: Cannot create children for a parent that is in a
different thread.
(Parent is Breeze::WidgetStateEngine(...), parent's thread is QThread(...),
current thread is QThread(0x...))
```
This matches the signature of KDE bug 465454 ("plasmashell crashes in
QTextDocument::docHandle"), originally fixed in plasma-workspace 5.27
by commit 402ebdbde ("dataengines/mpris2: don't recreate PlayerControl
for the same container"). The KDE 6 codebase removed/rewrote the
dataengines/mpris2 code (now in libkmpris/Multiplexer), so the fix no
longer applies, and the same class of thread-safety bug appears to have
been reintroduced.
## Files in attachment
- `01-gdb-backtrace.txt` — main thread backtrace from `coredumpctl gdb`
with debug symbols resolved (source file/line numbers). This is the
key file.
- `02-gdb-full-backtrace-all-threads.txt` — full `thread apply all bt`
output. Includes all ~80 threads (most are idle worker threads).
- `03-coredumpctl-info.txt` — `coredumpctl info` output: signal, PID,
command line, coredump metadata.
- `04-journal-user-crash-window.txt` — user journal for ~5 min before
and after the crash. Shows the resume event, the Breeze thread
warnings, and the KCrash handler invocation.
- `05-journal-system-crash-window.txt` — system journal for the same
window. Shows the suspend/resume cycle and amdgpu resume.
--
You are receiving this mail because:
You are watching all bug changes.