Bug 519739 - Crash in Plasma NM Handler::requestScanInternal
Summary: Crash in Plasma NM Handler::requestScanInternal
Status: RESOLVED FIXED
Alias: None
Product: plasmashell
Classification: Plasma
Component: Networking in general (other bugs)
Version First Reported In: 6.6.4
Platform: Compiled Sources Linux
: HI crash
Target Milestone: 1.0
Assignee: Plasma Bugs List
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2026-05-03 20:25 UTC by Obonganamfre Akpan
Modified: 2026-06-04 15:42 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed/Implemented In: 6.6.6
Sentry Crash Report:


Attachments
New crash information added by DrKonqi (91.88 KB, text/plain)
2026-05-03 20:25 UTC, Obonganamfre Akpan
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Obonganamfre Akpan 2026-05-03 20:25:41 UTC
Application: plasmashell (6.6.4)
 (Compiled from sources)
ApplicationNotResponding [ANR]: false
Qt Version: 6.10.2
Frameworks Version: 6.25.0
Operating System: Linux 6.17.0-22-generic x86_64
Windowing System: Wayland
Distribution: KDE neon User Edition
DrKonqi: 6.6.4 [CoredumpBackend]

-- Information about the crash:
Product: plasmashell
Component: general
Version: 6.6.4
Platform: KDE Neon
OS/Architecture: Linux (x86_64)
Plasmashell aborted unexpectedly during a session on KDE Neon. The crash appears to be triggered by the `QSGRenderThread` failing to access various QML and Mesa shader cache files that were marked as "deleted" on disk.

The backtrace indicates the crash occurs in `__pthread_kill_implementation` via `SIGABRT`. Multiple threads are hanging in `__futex_abstimed_wait_common64` within the Gallium/Mesa driver (`libgallium-25.2.8`).

Plasmashell terminates with a `SIGABRT`. The desktop environment (panels, wallpaper, and widgets) disappears.

Plasmashell should handle missing or "deleted" cache files gracefully by regenerating them instead of aborting the process.

Graphics Driver: Mesa 25.2.8 (Gallium)
Hardware: Dell XPS 13 9370 (Intel i915)
Operating System: KDE Neon (User Edition)
Kernel: 6.17.0-22-generic

The reporter is unsure if this crash is reproducible.

-- Backtrace (Reduced):
#6  __pthread_kill_implementation (no_tid=0, signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:44
#7  __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#8  __GI___pthread_kill (threadid=<optimized out>, signo=6) at ./nptl/pthread_kill.c:89
#9  0x00007930e3c4527e in __GI_raise (sig=6) at ../sysdeps/posix/raise.c:26
#10 0x00007930e3c288ff in __GI_abort () at ./stdlib/abort.c:79
#11 0x00007930e4961a31 in qAbort () at /workspace/build/src/corelib/global/qassert.cpp:46
#12 qt_maybe_message_fatal<QString&> (message=..., context=..., msgType=QtFatalMsg) at /workspace/build/src/corelib/global/qlogging.cpp:2166
[...]
#14 0x00007930e4963310 in QMessageLogger::fatal (this=<optimized out>, msg=0x7930e4675c00 "ASSERT: \"%s\" in file %s, line %d") at /workspace/build/src/corelib/global/qlogging.cpp:901
#15 0x00007930e494dc11 in qt_assert (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at /workspace/build/src/corelib/global/qassert.cpp:113
#16 0x000079307182c993 in QString::size() const::{lambda()#1}::operator()() const (__closure=0x7ffee261cb18) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:241
#17 0x000079307182c9d7 in QString::size (this=0x5bb1f1fa2bb8) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:241
#18 0x000079307182ca12 in QString::isEmpty (this=0x5bb1f1fa2bb8) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qstring.h:249
#19 0x00007930718750b0 in Handler::requestScanInternal(_ZN7Handler19requestScanInternalERK7QString.Frame *) (frame_ptr=0x5bb1f45999e0) at /workspace/build/libs/handler.cpp:698
#20 0x000079307187cceb in std::__n4861::coroutine_handle<void>::resume (this=0x5bb1f2905f40) at /usr/include/c++/13/coroutine:135
#21 0x00007930718892bc in QCoro::detail::QCoroDBusPendingReply<>::WaitForFinishedOperation::await_suspend(std::__n4861::coroutine_handle<void>)::{lambda(auto:1*)#1}::operator()<QDBusPendingCallWatcher>(QDBusPendingCallWatcher*) (__closure=0x5bb1f2905f40, watcher=0x5bb1f34a5dc0) at /usr/include/qcoro6/qcoro/qcorodbuspendingreply.h:43
#22 0x00007930718a02b3 in QtPrivate::FunctorCall<std::integer_sequence<unsigned long, 0ul>, QtPrivate::List<QDBusPendingCallWatcher*>, void, QCoro::detail::QCoroDBusPendingReply<>::WaitForFinishedOperation::await_suspend(std::__n4861::coroutine_handle<void>)::{lambda(auto:1*)#1}>::call(QCoro::detail::QCoroDBusPendingReply<>::WaitForFinishedOperation::await_suspend(std::__n4861::coroutine_handle<void>)::{lambda(auto:1*)#1}&, void**)::{lambda()#1}::operator()() const (__closure=0x7ffee261cc80) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qobjectdefs_impl.h:116


Reported using DrKonqi
This report was filed against 'kde' because the product 'plasmashell' could not be located in Bugzilla. Add it to drkonqi's mappings file!
Comment 1 Obonganamfre Akpan 2026-05-03 20:25:43 UTC
Created attachment 192006 [details]
New crash information added by DrKonqi

DrKonqi auto-attaching complete backtrace.
Comment 2 David Edmundson 2026-05-03 21:38:37 UTC
QCoro again.
Comment 3 Bug Janitor Service 2026-05-30 06:30:35 UTC
A possibly relevant merge request was started @ https://invent.kde.org/plasma/plasma-nm/-/merge_requests/576
Comment 4 David Edmundson 2026-05-30 10:18:03 UTC
Git commit ca844683ae902fd90614adf888032a6047955884 by David Edmundson.
Committed on 30/05/2026 at 06:29.
Pushed by davidedmundson into branch 'master'.

Avoid use of references across a co_await

It's common practice to pass a reference to a string into a method, even
though copying strings in Qt is extremely fast.

This is only fine for the first invocation, after a co_await it ends up
being a dangling reference. This would crash on the second iteration of
the loop.

M  +4    -1    libs/handler.cpp

https://invent.kde.org/plasma/plasma-nm/-/commit/ca844683ae902fd90614adf888032a6047955884
Comment 5 David Edmundson 2026-05-31 21:44:30 UTC
Git commit 00390c53a12394233ab6b79f94a2408fe5c8c85a by David Edmundson.
Committed on 30/05/2026 at 10:41.
Pushed by davidedmundson into branch 'Plasma/6.7'.

Avoid use of references across a co_await

It's common practice to pass a reference to a string into a method, even
though copying strings in Qt is extremely fast.

This is only fine for the first invocation, after a co_await it ends up
being a dangling reference. This would crash on the second iteration of
the loop.


(cherry picked from commit ca844683ae902fd90614adf888032a6047955884)

Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>

M  +4    -1    libs/handler.cpp

https://invent.kde.org/plasma/plasma-nm/-/commit/00390c53a12394233ab6b79f94a2408fe5c8c85a
Comment 6 Nate Graham 2026-06-04 15:42:02 UTC
Git commit 0ecb8a41c4bc37d128625b395a6ce4709df79a71 by Nate Graham.
Committed on 04/06/2026 at 15:36.
Pushed by ngraham into branch 'Plasma/6.6'.

Avoid use of references across a co_await

It's common practice to pass a reference to a string into a method, even
though copying strings in Qt is extremely fast.

This is only fine for the first invocation, after a co_await it ends up
being a dangling reference. This would crash on the second iteration of
the loop.


(cherry picked from commit ca844683ae902fd90614adf888032a6047955884)

Co-authored-by: David Edmundson <kde@davidedmundson.co.uk>

M  +4    -1    libs/handler.cpp

https://invent.kde.org/plasma/plasma-nm/-/commit/0ecb8a41c4bc37d128625b395a6ce4709df79a71