https://bugs.kde.org/show_bug.cgi?id=515835
Bug ID: 515835
Summary: All Wayland clients crash with fatal "invalid global
wl_output" protocol error when display is hotplugged
via KVM switch (atomic modeset failure causes output
loss)
Classification: Plasma
Product: kwin
Version First 6.5.5
Reported In:
Platform: CachyOS
OS: Linux
Status: REPORTED
Severity: major
Priority: NOR
Component: wayland-generic
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
Created attachment 189445
--> https://bugs.kde.org/attachment.cgi?id=189445&action=edit
Full journalctl output around the crash timestamps will be attached when
filing. The logs above are extracted from `journalctl -b 0
### Overview
When a KVM switch (or suspend/resume) causes a display to disconnect and
reconnect on a different DP-MST connector, the underlying DRM atomic modeset
fails. During this failure, KWin removes the wl_output global and all
connected Wayland clients receive a fatal protocol error:
```
wl_registry#2: error 0: invalid global wl_output (126)
The Wayland connection experienced a fatal error: Protocol error
```
This kills every single application in the session: plasmashell, konsole,
browsers, kdeconnect, krunner, kded6, xdg-desktop-portal-kde, and more.
XWayland also crashes, killing all X11 applications. plasmashell restarts
(because it's managed by the session), but all user state is lost.
### System Information
- KDE Plasma 6.5.5, KWin 6.5.5-3.1
- Qt 6.x, KDE Frameworks (CachyOS packages)
- Kernel: 6.18.9-2-cachyos
- GPU: Intel Iris Plus Graphics 645 (Coffee Lake, i915 driver)
- Machine: MacBookPro15,4
- Monitor: BenQ RD280U (3840x2560, DP-MST, built-in KVM switch)
- Session: Wayland (plasmalogin display manager)
### Steps to Reproduce
1. Run KDE Plasma Wayland session with several applications open
2. Connect to a monitor with a built-in KVM switch via Thunderbolt/DP-MST
3. Switch the KVM to another machine (display disconnects)
4. Switch the KVM back (display reconnects on a different DP connector)
5. Observe: all open applications are killed, plasmashell restarts
### Frequency
Approximately 5 out of 12 KVM switches cause the full client kill.
Happens multiple times daily with normal KVM usage.
### Detailed Failure Sequence
The following is captured from `journalctl -b 0` at 10:07:57 on 2026-02-10:
**1. Atomic modeset fails (kernel i915 issue):**
```
kwin_wayland[1136]: Atomic modeset test failed! Invalid argument
```
(Repeated multiple times over ~10 seconds as the kernel retries.)
**2. KWin loses all outputs:**
```
polkit-kde-authentication-agent-1[23339]: There are no outputs - creating
placeholder screen
kactivitymanagerd[23375]: There are no outputs - creating placeholder screen
xdg-desktop-portal-kde[23353]: There are no outputs - creating placeholder
screen
kded6[23345]: There are no outputs - creating placeholder screen
konsole[26732]: There are no outputs - creating placeholder screen
plasmashell[23684]: There are no outputs - creating placeholder screen
plasmashell[23684]: requesting unexisting screen available rect -1
```
**3. KWin sends invalid wl_output global to ALL clients:**
```
kwin_wayland_wrapper[1136]: error in client communication (pid 1136)
kwin_wayland_wrapper[23356]: XWAYLAND: wl_registry#2: error 0: invalid global
wl_output (126)
kwin_wayland_wrapper[23356]: (EE) failed to dispatch Wayland events: Protocol
error
```
**4. Every Wayland client crashes with fatal protocol error:**
```
polkit-kde-authentication-agent-1[23339]: wl_registry#2: error 0: invalid
global wl_output (126)
polkit-kde-authentication-agent-1[23339]: The Wayland connection experienced a
fatal error: Protocol error
xdg-desktop-portal-kde[23353]: wl_registry#2: error 0: invalid global wl_output
(126)
xdg-desktop-portal-kde[23353]: The Wayland connection experienced a fatal
error: Protocol error
kactivitymanagerd[23375]: The Wayland connection experienced a fatal error:
Protocol error
kded6[23345]: The Wayland connection experienced a fatal error: Protocol error
konsole[26732]: The Wayland connection experienced a fatal error: Protocol
error
krunner[26666]: The Wayland connection experienced a fatal error: Protocol
error
kwalletd6[27308]: The Wayland connection experienced a fatal error: Protocol
error
kdeconnectd[23784]: The Wayland connection experienced a fatal error: Protocol
error
baloorunner[26710]: The Wayland connection experienced a fatal error: Protocol
error
ksecretd[27347]: The Wayland connection experienced a fatal error: Protocol
error
thorium-browser[27265]: wl_registry#2: error 0: invalid global wl_output (126)
```
**5. XWayland crashes, killing all X11 apps:**
```
kwin_wayland[1136]: The X11 connection broke (error 1)
kaccess[23346]: The X11 connection broke (error 1). Did the X11 server die?
xembedsniproxy[23343]: The X11 connection broke (error 1). Did the X11 server
die?
gmenudbusmenuproxy[23344]: The X11 connection broke (error 1). Did the X11
server die?
```
**6. plasmashell restarts (new PID), all user state is lost.**
### Analysis
The Wayland protocol error `invalid global wl_output (N)` means that a
client attempted to bind to a wl_output global that no longer exists.
This is a fatal protocol error per the Wayland specification -- clients
cannot recover from it.
The issue appears to be that when atomic modeset fails and the DRM
connector is lost, KWin removes the wl_output global, but the removal and
any subsequent client operations race, resulting in clients referencing
the stale global ID.
Importantly, note that:
- KWin itself (PID 1136) survives -- it is NOT crashing
- The problem is that KWin sends a protocol error to its connected clients
- ALL clients are affected regardless of toolkit (Qt, GTK, XWayland, SDL)
- This same error occurs with two different global IDs (114 and 126) across
different occurrences, confirming it's the wl_output global being removed
### Expected Behavior
1. When atomic modeset fails, KWin should retry or wait for the display to
reconnect rather than immediately removing the wl_output global
2. If the output must be removed temporarily, the removal should not cause
protocol errors for connected clients
3. XWayland should be restarted automatically if it crashes (partially
addressed by existing work, but it doesn't help when the root cause
kills all native Wayland clients too)
4. At minimum, plasma-managed services (kded6, krunner, etc.) should be
resilient to temporary output loss
### Related Bugs
- **Bug 511988**: "Random GUI full freeze when using a KVM switch" --
same trigger (KVM switch) but different symptom (total freeze vs. protocol
error killing all clients). May share root cause in output handling.
- **Bug 452435**: "SDL Applications crash with invalid global
wp_drm_lease_device_v1 when display unplugged" -- same class of bug
(invalid global during hotplug) but for a different global type. Was fixed
in 2022 by delaying global destruction. A similar fix may be needed for
wl_output in this scenario.
- **Bug 485318**: "kwin_wayland crashes in updateOutputs() when displays
intermittently available after suspend" -- related output management
crash, fixed in 6.1. Our issue is different (KWin doesn't crash, it
sends protocol errors).
- **Bug 513040**: "black screen in kwin wayland after disconnecting usb-c
monitor" -- shows same "Atomic modeset test failed" errors, different
symptom (black screen vs. client kill).
### Upstream Kernel Bug
The underlying atomic modeset failure is caused by an i915 kernel driver
bug where DP-MST topology state becomes corrupted during KVM-triggered
hotplug. A separate bug report will be filed against drm/i915. However,
KWin should handle modeset failures gracefully without killing all clients
with protocol errors, regardless of the kernel driver behavior.
https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15682
### Logs
(Full journalctl output around the crash timestamps will be attached when
filing. The logs above are extracted from `journalctl -b 0`.)
--
You are receiving this mail because:
You are watching all bug changes.