-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Description
Environment
- OS: Fedora 42
- Sway version: 1.10.1-1.fc42.x86_64
- wlroots version: 0.18.2-1.fc42.x86_64
- Mesa version: 25.1.9-1.fc42.x86_64
- Kernel: 6.17.4-200.fc42.x86_64
- GPU: (Please fill in your GPU model)
- Driver: (nouveau blacklisted, NVIDIA driver)
Display Configuration
- Internal display: eDP-1
- External display: DP-3 (HDMI display connected)
- Multi-monitor setup: Yes
Description
Sway crashes intermittently when hovering over links in Google Chrome, particularly when using a multi-monitor setup. The crash causes the entire Wayland session to terminate, returning to the login screen.
Steps to Reproduce
- Start Sway with multi-monitor setup (internal laptop display + external HDMI display)
- Open Google Chrome
- Browse websites and hover over links
- Crash occurs unpredictably, but consistently during Chrome link hover interactions
Expected Behavior
Sway should handle rendering operations gracefully without crashing, even under load from Chrome's rendering engine.
Actual Behavior
Sway crashes with a failed assertion in the rendering pipeline. The session terminates and user is returned to the login screen.
Crash Details
The crash occurs with the following assertion failure:
sway: render/pass.c:23: wlr_render_pass_add_texture: Assertion `box->x >= 0 && box->y >= 0 && box->x + box->width <= options->texture->width && box->y + box->height <= options->texture->height' failed.
Stack trace (main thread):
#0 0x00007f96371cee9c __pthread_kill_implementation (libc.so.6 + 0x73e9c)
#1 0x00007f9637174f3e raise (libc.so.6 + 0x19f3e)
#2 0x00007f963715c6d0 abort (libc.so.6 + 0x16d0)
#3 0x00007f963715c639 __assert_fail_base.cold (libc.so.6 + 0x1639)
#4 0x00007f96373e9f0c wlr_render_pass_add_texture.cold (libwlroots-0.18.so + 0x9f0c)
#5 0x00007f963743c0c5 wlr_scene_output_build_state (libwlroots-0.18.so + 0x5c0c5)
#6 0x0000555bec467e2f output_repaint_timer_handler.part.0 (/usr/bin/sway + 0x17e2f)
#7 0x0000555bec4680b5 handle_frame (/usr/bin/sway + 0x180b5)
Preceding Errors
Before the crash, the logs show repeated DRM atomic commit failures and page-flip errors:
[ERROR] [wlr] [backend/drm/atomic.c:79] connector eDP-1: Atomic commit failed: Device or resource busy
[ERROR] [sway/desktop/output.c:317] Page-flip failed on output eDP-1
[ERROR] [wlr] [backend/drm/atomic.c:79] connector DP-3: Atomic commit failed: Device or resource busy
[ERROR] [sway/desktop/output.c:317] Page-flip failed on output DP-3
These errors occur repeatedly (multiple times per second) leading up to the crash, suggesting resource contention or race conditions in the multi-monitor DRM handling.
Analysis
The crash appears to be caused by:
- DRM atomic commits failing with "Device or resource busy" on both displays
- This leads to incorrect state tracking in the rendering pipeline
- Eventually resulting in invalid texture coordinates (box dimensions exceeding texture bounds)
- The invalid coordinates trigger the assertion failure in
wlr_render_pass_add_texture
The issue is triggered by Chrome's rendering operations (particularly hover effects), which likely increase texture operation demand on an already-stressed rendering system.
Full Log Excerpt
Click to expand relevant journalctl output
Oct 30 09:00:56 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: 05:24:57.892 [ERROR] [wlr] [backend/drm/atomic.c:79] connector DP-3: Atomic commit failed: Device or resource busy
Oct 30 09:00:56 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: 05:24:57.892 [ERROR] [sway/desktop/output.c:317] Page-flip failed on output DP-3
Oct 30 09:01:22 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: 05:25:24.580 [ERROR] [wlr] [backend/drm/atomic.c:79] connector eDP-1: Atomic commit failed: Device or resource busy
Oct 30 09:01:22 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: 05:25:24.580 [ERROR] [sway/desktop/output.c:317] Page-flip failed on output eDP-1
Oct 30 09:01:22 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: 05:25:24.630 [ERROR] [wlr] [backend/drm/atomic.c:79] connector eDP-1: Atomic commit failed: Device or resource busy
Oct 30 09:01:22 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: 05:25:24.630 [ERROR] [sway/desktop/output.c:317] Page-flip failed on output eDP-1
Oct 30 09:01:23 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: 05:25:24.663 [ERROR] [wlr] [backend/drm/atomic.c:79] connector eDP-1: Atomic commit failed: Device or resource busy
Oct 30 09:01:23 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: 05:25:24.663 [ERROR] [sway/desktop/output.c:317] Page-flip failed on output eDP-1
Oct 30 09:05:30 lap-kpe-fed /usr/libexec/gdm-wayland-session[4263]: sway: render/pass.c:23: wlr_render_pass_add_texture: Assertion `box->x >= 0 && box->y >= 0 && box->x + box->width <= options->texture->width && box->y + box->height <= options->texture->height' failed.
Oct 30 09:05:30 lap-kpe-fed audit[4263]: ANOM_ABEND auid=1000 uid=1000 gid=1000 ses=2 subj=kernel pid=4263 comm="sway" exe="/usr/bin/sway" sig=6 res=1