Skip to content

Troubleshooting

Ken Tobias edited this page Sep 29, 2026 · 11 revisions

Troubleshooting

phys-mem / phys-disk fields are empty or missing

On Linux, phys-mem reads DMI memory tables and requires root:

sudo retch

Without root, the field is silently omitted rather than erroring — this is expected, not a bug. On Windows neither needs anything: phys-mem reads the SMBIOS table and phys-disk the storage IOCTLs natively, with no PowerShell and no administrator rights.

What sudo retch actually changes

Running under sudo is not simply "retch with more fields" — it trades one set for another, because sudo's default env_reset clears most of the environment. Diffing a sudo retch --full run against a plain one is therefore not a fair before/after.

Field
Root only phys-mem (DMI tables, mode 0400 root); the snapshot count in btrfs (btrfs subvolume list -s)
User only editor ($VISUAL/$EDITOR), desktop and wm (XDG_CURRENT_DESKTOP and friends)

The btrfs snapshot count is omitted, never shown as 0, when it can't be read, so "couldn't check" is never mistaken for "no snapshots".

weather field is missing or slow

weather requires network access (one plain-HTTP request to wttr.in, which also locates you by IP if weather_location isn't set) and has a ~4s timeout. It's shown in --full mode only by default — it won't appear in standard, --short, or --long output even with network access. An unknown weather_location makes wttr.in return an error, and the field is then left out rather than shown wrong.

domain-search field is empty

domain-search queries resolvectl status (systemd-resolved) for per-interface DNS search domains. On systems without systemd-resolved (or where it isn't managing DNS), this field will be empty. It's shown in --full mode only.

Logo doesn't appear when output is piped or redirected

This is intentional, not a bug: the logo is automatically suppressed whenever stdout is not a terminal (e.g. retch | bat, retch > file.txt, or when running inside a script). This avoids dumping raw terminal graphics escape sequences into a file or another program's input. Setting show_logo = true does not change this; the piping check always wins.

Logo prints above the field list instead of beside it

That is the layout falling back deliberately: side by side needs at least 95 columns, and enough room for the text column and the logo together. Widen the terminal, or use --no-logo if you would rather have the width back.

On Windows Terminal the logo currently always prints above the text. That is a known open bug, not the fallback. A related one: on Windows, --chafa-logo is ignored even when requested.

macOS: binary is quarantined / won't run after download

Prebuilt macOS release binaries are not yet code-signed or notarized (tracked as future work). If macOS blocks the binary after downloading a release asset directly:

xattr -dr com.apple.quarantine /path/to/retch

This isn't needed when installing via cargo install retch-cli, nix run github:l1a/retch, or building from source — only for binaries downloaded directly from a GitHub Release.

Local benchmarks look slower than expected

If you have FUSE-mounted volumes (e.g. cryfs, EncFS vaults), disk detection can be skewed by slow statvfs calls on those mounts. Standard, --short, and --long modes already skip fuse.* mounts to avoid this; only --full mode probes them. Unmount FUSE volumes before benchmarking, or discount runs where they're mounted.

To see where the time actually goes, run it with RETCH_TIMING set:

RETCH_TIMING=1 retch --long >/dev/null

Each probe prints one line to stderr with its start offset and duration. Probes that start at about the same offset ran concurrently; one that starts after another has finished ran serially and added its full duration to the run. Capture this while it is slow — the same machine can be fast a few minutes later.