diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-11 05:07:42 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-11 05:07:42 -0500 |
| commit | 7095d622ab6e295143d1306bdb5c8ecd85cf0745 (patch) | |
| tree | 006df0449c9deded341904e00d2ff315742f0f8d /inbox | |
| parent | 2ffb01c62b154bac73542da63825a8ab1a17a49c (diff) | |
| download | rulesets-7095d622ab6e295143d1306bdb5c8ecd85cf0745.tar.gz rulesets-7095d622ab6e295143d1306bdb5c8ecd85cf0745.zip | |
fix(scripts): keep screenshot --launch from crashing the compositor
An XWayland client launched by --launch could send a configure request while the script tore down the headless output. Hyprland's damage path then dereferenced the removed monitor and the compositor aborted (Hyprland 0.55.2, coredump analysis in docs/design/).
The fix has two layers. --launch now forces the Wayland backend (DISPLAY unset, GDK and Qt steered to wayland) so no XWayland surface exists to race. Teardown also polls until the launched clients actually unmap before removing the output.
X11-only apps fail to map under the default, and some emacs builds are X11-only. The new --x11 flag allows XWayland for them, protected by the unmap wait. The no-window error hints at the flag.
Diffstat (limited to 'inbox')
| -rw-r--r-- | inbox/2026-06-11-0045-from-archsetup-screenshot-py-launch-crash-on-ratio.org | 5 |
1 files changed, 0 insertions, 5 deletions
diff --git a/inbox/2026-06-11-0045-from-archsetup-screenshot-py-launch-crash-on-ratio.org b/inbox/2026-06-11-0045-from-archsetup-screenshot-py-launch-crash-on-ratio.org deleted file mode 100644 index dfad9f4..0000000 --- a/inbox/2026-06-11-0045-from-archsetup-screenshot-py-launch-crash-on-ratio.org +++ /dev/null @@ -1,5 +0,0 @@ -#+TITLE: screenshot.py --launch crash on ratio 2026-06-10 15:15 — roo -#+SOURCE: from archsetup -#+DATE: 2026-06-11 00:45:45 -0500 - -screenshot.py --launch crash on ratio 2026-06-10 15:15 — root cause found, harness fix is yours. Coredump stack (Hyprland 0.55.2, SIGABRT): CWindow::onX11ConfigureRequest -> CCompositor::changeWindowZOrder -> IHyprRenderer::damageMonitor -> CMonitor::isMirror. The launched app (emacs -Q, no pgtk env vars) mapped via XWayland; its configure request raced the headless-output teardown and the damage path dereferenced the removed monitor. Two fix directions for --launch: (1) wait for the client to map and close it before destroying the headless output, (2) force the Wayland backend for launched apps (e.g. GDK_BACKEND=wayland, WAYLAND_DISPLAY set, DISPLAY unset) so no XWayland surface exists to race. The other capture modes don't touch outputs and are fine. Until the fix lands, archsetup treats --launch as unsafe on live sessions (memory entry filed). Full coredump retrievable on ratio: coredumpctl info 1833 --since '2026-06-10 15:10'. |
