Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-1700GitHub issuePublicDecided· Out of scope

herdr client aborts (double Rust panic) when its terminal closes: "failed printing to stderr: Input/output error (os error 5)"

Reported by perminder-klair · filed Aug 18, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 days ago.

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

herdr client aborts (double Rust panic) when its terminal closes: "failed printing to stderr: Input/output error (os error 5)"revision 1 · captured 2026-09-28 21:29 UTC via poll

What happened

herdr client (package herdr 0.8.0.r13-1, the Omarchy fork) crashes with SIGABRT whenever the terminal hosting it goes away while the client still writes output. systemd-coredump caught it three times on this machine with identical backtraces (Aug 17 2026 ×2, Aug 18 2026), plus once earlier from a local build.

Evidence

The core dump's memory contains Rust's standard-library panic message:

failed printing to stderr: Input/output error (os error 5)

EIO is what a pty returns after its terminal emulator has died. The main thread's stack shows the panic machinery twice at identical offsets (frames 3–10 repeated as 13–18) before abort() — the panic handler's own attempt to print the panic message to the same dead stderr fails too, and the double panic aborts. si_code: SI_TKILL confirms the process raised SIGABRT on itself. Memory pressure ruled out (6.6 GiB free, no OOM kills).

Backtrace (binary is stripped; not on debuginfod):

Stack trace of thread 18715:
#0  0x00007fa71229a17c n/a (libc.so.6 + 0x9a17c)
#1  0x00007fa71223e5d0 raise (libc.so.6 + 0x3e5d0)
#2  0x00007fa712225685 abort (libc.so.6 + 0x25685)
#3  0x000055f56872401a n/a (herdr + 0x112a01a)
#4  0x000055f56871f999 n/a (herdr + 0x1125999)
#5  0x000055f56871fded n/a (herdr + 0x1125ded)
#6  0x000055f568702b52 n/a (herdr + 0x1108b52)
#7  0x000055f5686f9ae9 n/a (herdr + 0x10ffae9)
#8  0x000055f568703d1d n/a (herdr + 0x1109d1d)
#9  0x000055f56874578c n/a (herdr + 0x114b78c)
#10 0x000055f568720520 n/a (herdr + 0x1126520)
#11 0x000055f56859d0ba n/a (herdr + 0xfa30ba)
#12 0x000055f56859c963 n/a (herdr + 0xfa2963)
#13 0x000055f56871fce2 n/a (herdr + 0x1125ce2)
#14 0x000055f568702b52 n/a (herdr + 0x1108b52)
#15 0x000055f5686f9ae9 n/a (herdr + 0x10ffae9)
#16 0x000055f568703d1d n/a (herdr + 0x1109d1d)
#17 0x000055f56874578c n/a (herdr + 0x114b78c)
#18 0x000055f568720520 n/a (herdr + 0x1126520)
#19 0x000055f5680b87da n/a (herdr + 0xabe7da)
#20 0x000055f5680b57a9 n/a (herdr + 0xabb7a9)
#21 0x000055f5682aa39f n/a (herdr + 0xcb039f)
#22 0x000055f567d52f46 n/a (herdr + 0x758f46)
#23 0x000055f567e52561 n/a (herdr + 0x858561)
#24 0x000055f56871e857 n/a (herdr + 0x1124857)
#25 0x000055f5682f696d n/a (herdr + 0xcfc96d)
#26 0x00007fa712227781 n/a (libc.so.6 + 0x27781)
#27 0x00007fa7122278b9 __libc_start_main (libc.so.6 + 0x278b9)
#28 0x000055f5679d58c5 n/a (herdr + 0x3db8c5)

Steps to reproduce

  1. Run herdr client in a terminal window (launched via xdg-terminal-exec under Hyprland).
  2. Close the terminal window while the client is running.
  3. The client's next write to the dead pty returns EIO; Rust std panics with "failed printing to stderr", the panic message itself can't print, and the double panic aborts → core dump + Omarchy crash notification.

Expected

The client exits quietly when its pty is gone (handle EIO on stdout/stderr writes instead of panicking), rather than dumping core and triggering a crash notification on every terminal close.

System

  • Omarchy 4.0.0-1, Hyprland 0.56.2, kernel 7.1.8-arch1-3 (ThinkPad X270, Intel i5-7200U / HD 620)
  • herdr 0.8.0.r13-1 (installed 2026-08-15)

Filed by Claude Fable 5 via Claude Code.

View raw text
## What happened

`herdr client` (package `herdr 0.8.0.r13-1`, the Omarchy fork) crashes with SIGABRT whenever the terminal hosting it goes away while the client still writes output. systemd-coredump caught it three times on this machine with identical backtraces (Aug 17 2026 ×2, Aug 18 2026), plus once earlier from a local build.

## Evidence

The core dump's memory contains Rust's standard-library panic message:

```
failed printing to stderr: Input/output error (os error 5)
```

EIO is what a pty returns after its terminal emulator has died. The main thread's stack shows the panic machinery **twice at identical offsets** (frames 3–10 repeated as 13–18) before `abort()` — the panic handler's own attempt to print the panic message to the same dead stderr fails too, and the double panic aborts. `si_code: SI_TKILL` confirms the process raised SIGABRT on itself. Memory pressure ruled out (6.6 GiB free, no OOM kills).

Backtrace (binary is stripped; not on debuginfod):

```
Stack trace of thread 18715:
#0  0x00007fa71229a17c n/a (libc.so.6 + 0x9a17c)
#1  0x00007fa71223e5d0 raise (libc.so.6 + 0x3e5d0)
#2  0x00007fa712225685 abort (libc.so.6 + 0x25685)
#3  0x000055f56872401a n/a (herdr + 0x112a01a)
#4  0x000055f56871f999 n/a (herdr + 0x1125999)
#5  0x000055f56871fded n/a (herdr + 0x1125ded)
#6  0x000055f568702b52 n/a (herdr + 0x1108b52)
#7  0x000055f5686f9ae9 n/a (herdr + 0x10ffae9)
#8  0x000055f568703d1d n/a (herdr + 0x1109d1d)
#9  0x000055f56874578c n/a (herdr + 0x114b78c)
#10 0x000055f568720520 n/a (herdr + 0x1126520)
#11 0x000055f56859d0ba n/a (herdr + 0xfa30ba)
#12 0x000055f56859c963 n/a (herdr + 0xfa2963)
#13 0x000055f56871fce2 n/a (herdr + 0x1125ce2)
#14 0x000055f568702b52 n/a (herdr + 0x1108b52)
#15 0x000055f5686f9ae9 n/a (herdr + 0x10ffae9)
#16 0x000055f568703d1d n/a (herdr + 0x1109d1d)
#17 0x000055f56874578c n/a (herdr + 0x114b78c)
#18 0x000055f568720520 n/a (herdr + 0x1126520)
#19 0x000055f5680b87da n/a (herdr + 0xabe7da)
#20 0x000055f5680b57a9 n/a (herdr + 0xabb7a9)
#21 0x000055f5682aa39f n/a (herdr + 0xcb039f)
#22 0x000055f567d52f46 n/a (herdr + 0x758f46)
#23 0x000055f567e52561 n/a (herdr + 0x858561)
#24 0x000055f56871e857 n/a (herdr + 0x1124857)
#25 0x000055f5682f696d n/a (herdr + 0xcfc96d)
#26 0x00007fa712227781 n/a (libc.so.6 + 0x27781)
#27 0x00007fa7122278b9 __libc_start_main (libc.so.6 + 0x278b9)
#28 0x000055f5679d58c5 n/a (herdr + 0x3db8c5)
```

## Steps to reproduce

1. Run `herdr client` in a terminal window (launched via `xdg-terminal-exec` under Hyprland).
2. Close the terminal window while the client is running.
3. The client's next write to the dead pty returns EIO; Rust std panics with "failed printing to stderr", the panic message itself can't print, and the double panic aborts → core dump + Omarchy crash notification.

## Expected

The client exits quietly when its pty is gone (handle EIO on stdout/stderr writes instead of panicking), rather than dumping core and triggering a crash notification on every terminal close.

## System

- Omarchy 4.0.0-1, Hyprland 0.56.2, kernel 7.1.8-arch1-3 (ThinkPad X270, Intel i5-7200U / HD 620)
- herdr 0.8.0.r13-1 (installed 2026-08-15)

Filed by Claude Fable 5 via Claude Code.

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 04:38 UTC