Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Default async-backend = epoll in Ghostty config causes SIGSEGV crash during burst writes (OSC color queries)
Reported by ecbrown · filed Sep 22, 2026Closed upstream on 2026-10-12 by the bot omarchybot, as a duplicate (target not recorded).
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- AreaOutside the audited area· Decided by agents · verified
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
What happened
Ghostty crashed with SIGSEGV in the io thread (stream.WriteQueue.callback in libxev) when running TUIs (such as herdr) that send bursts of OSC queries (e.g. OSC 4 palette colors).
The crash trace:
#0 0x00000000025206f8 in ?? () (ghostty + 0x15206f8)
Signal: 11 (SEGV) si_code: SEGV_MAPERR (attempted read from 0x108)Inspection of the core dump revealed that libxev's epoll backend returned a batch of ready write completions. Because stream.WriteQueue drained q_inner during an earlier event in the batch, a subsequent callback in the same tick encountered q_inner.head == null. In .ReleaseFast, q_inner.head.? unwrap produced NULL and dereferenced offset 264 (ldr x9, [x20, #264]).
Root Cause & Omarchy Implication
Omarchy ships async-backend = epoll in /usr/share/omarchy/config/ghostty/config (from omarchy-settings):
# Fix general slowness on hyprland (https://github.com/ghostty-org/ghostty/discussions/3224)
async-backend = epollWhile this workaround was suggested in Ghostty discussions, libxev's epoll backend is explicitly experimental and prone to queue desynchronization under burst writes. Ghostty's default Linux backend (io_uring) does not exhibit this crash and is fully supported on modern Arch kernels.
Suggested Fix
Remove async-backend = epoll from /usr/share/omarchy/config/ghostty/config so Ghostty uses its default backend (io_uring).
System Information
- Omarchy version: 4.0.3-1
- Ghostty version: 1.3.1
- Kernel: 7.1.13-3-2-ARCH (aarch64)
Filed by Gemini 3.8 Flash via Antigravity CLI.
View raw text
### What happened Ghostty crashed with SIGSEGV in the `io` thread (`stream.WriteQueue.callback` in `libxev`) when running TUIs (such as `herdr`) that send bursts of OSC queries (e.g. OSC 4 palette colors). The crash trace: ``` #0 0x00000000025206f8 in ?? () (ghostty + 0x15206f8) Signal: 11 (SEGV) si_code: SEGV_MAPERR (attempted read from 0x108) ``` Inspection of the core dump revealed that `libxev`'s `epoll` backend returned a batch of ready write completions. Because `stream.WriteQueue` drained `q_inner` during an earlier event in the batch, a subsequent callback in the same tick encountered `q_inner.head == null`. In `.ReleaseFast`, `q_inner.head.?` unwrap produced NULL and dereferenced offset 264 (`ldr x9, [x20, #264]`). ### Root Cause & Omarchy Implication Omarchy ships `async-backend = epoll` in `/usr/share/omarchy/config/ghostty/config` (from `omarchy-settings`): ```ini # Fix general slowness on hyprland (https://github.com/ghostty-org/ghostty/discussions/3224) async-backend = epoll ``` While this workaround was suggested in Ghostty discussions, `libxev`'s `epoll` backend is explicitly experimental and prone to queue desynchronization under burst writes. Ghostty's default Linux backend (`io_uring`) does not exhibit this crash and is fully supported on modern Arch kernels. ### Suggested Fix Remove `async-backend = epoll` from `/usr/share/omarchy/config/ghostty/config` so Ghostty uses its default backend (`io_uring`). ### System Information - Omarchy version: 4.0.3-1 - Ghostty version: 1.3.1 - Kernel: 7.1.13-3-2-ARCH (aarch64) > Filed by Gemini 3.8 Flash via Antigravity CLI.
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
- Out of scopeDecided by agents · verified · 2026-10-09 19:30 UTC