https://bugs.kde.org/show_bug.cgi?id=527798
Bug ID: 527798
Summary: plasmashell deadlocks on resume in KDE Connect
NotificationsModel synchronous D-Bus read
Classification: Applications
Product: kdeconnect
Version First 26.08.1
Reported In:
Platform: Other
OS: Linux
Status: REPORTED
Severity: major
Priority: NOR
Component: plasmoid
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
SUMMARY
After resuming from s2idle, plasmashell deadlocks on the GUI thread while the
KDE Connect system tray plasmoid reads a notification property over D-Bus
synchronously. The panel and global shortcuts stop responding. plasmashell then
ignores SIGTERM and is aborted.
This is the same failure as bug 474202, which was closed RESOLVED UNMAINTAINED
on 2025-04-17 because it was filed against Plasma 5 / Qt 5. That closure asked
for a new report with a current backtrace if the hang still reproduces. It
does, on Plasma 6.7.5.
STEPS TO REPRODUCE
1. Pair an Android phone with KDE Connect.
2. Leave the KDE Connect system tray item enabled (plugin org.kde.kdeconnect
loaded in the Plasma system tray).
3. Suspend to s2idle (lid close) and resume.
Observed twice on this machine:
- 2026-10-16: several s2idle cycles. The hang was visible around 11:57 CEST.
plasmashell was aborted at 11:58.
- 2026-10-20: resume at 12:20:42. plasmashell stopped answering D-Bus by
12:21:10, ignored SIGTERM, and was aborted at 12:25:28. No new core was written
because the machine rebooted at the same moment. The pattern matched the first
occurrence.
OBSERVED RESULT
The desktop is only half alive:
- Window-local shortcuts such as Ctrl+Tab still work.
- Panel clicks and the Meta key do nothing.
- The clock in the panel stops.
- kded6 drops notifications because plasmashell does not answer (D-Bus timeout,
about 25 s).
- systemd cannot stop plasma-plasmashell.service with SIGTERM. After the stop
timeout the process is aborted (SIGABRT).
Shortened backtrace of the plasmashell main thread while blocked (2026-10-16,
PID 31597). This is the GUI thread, not the renderer:
#46 QCoreApplication::exec
#35 QDBusConnectionPrivate::deliverCall
(D-Bus signal from kdeconnectd)
#34 OrgKdeKdeconnectDeviceNotificationsNotificationInterface::qt_metacall
#32 NotificationsModel::notificationUpdated
#31 QAbstractItemModel::dataChanged
#18 NotificationsModel::isAnyDimissable
(libkdeconnectdeclarativeplugin.so)
#15 OrgKdeKdeconnectDeviceNotificationsNotificationInterface::qt_metacall
#12 QDBusAbstractInterfacePrivate::property
#11 QDBusConnection::call (CallMode = Block)
#9 QDBusPendingCallPrivate::waitForFinished
#8 QWaitCondition::wait
The notification model handles a notification update by reading a D-Bus
property on the GUI thread and waits until kdeconnectd answers. On this resume
kdeconnectd was in a crash loop, so the reply never came and the shell stayed
blocked.
kdeconnectd crash loop at the same time (24 SIGABRT in 12 s), failing before
the daemon is up:
#12 main (kdeconnectd)
#11 QApplicationPrivate::init
#7 QGuiApplicationPrivate::createPlatformIntegration
#6 init_platform.cold
#4 QMessageLogger::fatal
That crash loop matches bug 488297 and bug 450320. It leaves the blocking call
without a peer. The shell deadlock itself is the synchronous property read in
NotificationsModel, as in bug 474202.
Removing the tray plugin (org.kde.kdeconnect not loaded in the system tray)
stops this deadlock. kdeconnectd keeps running; the phone, file transfer and
clipboard still work. The tray item is what pulls the blocking call onto the
plasmashell GUI thread.
EXPECTED RESULT
plasmashell does not block the GUI thread on a KDE Connect D-Bus call. Resume
leaves the panel usable. A slow or restarting kdeconnectd must not freeze the
shell.
SOFTWARE/OS VERSIONS
Operating System: Fedora Linux 44
KDE Plasma Version: 6.7.5 (plasma-workspace-6.7.5-1.fc44)
KDE Frameworks Version: 6.31.0
KDE Connect Version: 26.08.1 (kde-connect-26.08.1-1.fc44)
Qt Version: 6.11.2 (qt6-qtbase-6.11.2-3.fc44)
Kernel Version: 7.2.11-200.fc44.x86_64
Graphics Platform: Wayland
Machine: Lenovo ThinkPad 20X500B4GE
ADDITIONAL INFORMATION
Bug 474202 is this bug on Plasma 5. Please treat this as the requested
follow-up on the current code, not as something to close against the old
UNMAINTAINED report.
Bug 513620 is a different stack (DevicesModel::passesFilter, about 20 s hang
after login). It was closed because the reporter could no longer reproduce it.
It is not this notification-model deadlock.
Bug 442645 ("Pause media during calls") is a different plugin
(kdeconnect_pausemusic) and does not avoid this resume path.
--
You are receiving this mail because:
You are watching all bug changes.