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-4454GitHub issuePublicReceived

omarchy-voxtype-status script orphans child processes due to missing SIGTERM trap

Reported by dmitrylito · filed Jun 6, 2026Closed upstream on 2026-06-16 by dhh. GitHub close reason: completed. No closing PR or commit is recorded — "completed" alone is not evidence of a fix.

Received and recorded verbatim. Nothing has been checked yet.

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?
Not yet mapped to any requirement or component.
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?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.

Original report

omarchy-voxtype-status script orphans child processes due to missing SIGTERM traprevision 1 · captured 2026-10-04 11:56 UTC via poll

System details

AMD 9850, Nvidia RTX 5080

What's wrong?

Bug Report: omarchy-voxtype-status Orphans Child Processes on Waybar Reloads

Description

The omarchy-voxtype-status script fails to clean up its child processes when terminated by a system signal, such as when Waybar reloads. This causes orphaned voxtype status --follow processes to accumulate in the background over time, unnecessarily cluttering the process tree and consuming system resources.

Root Cause

The script uses a trap to kill its child processes when it exits:

# File: ~/.local/share/omarchy/bin/omarchy-voxtype-status (Line 5)
trap 'kill 0' EXIT

However, in Bash, trapping EXIT only executes the cleanup command during a normal script termination. When Waybar reloads (or when the process is killed externally), it sends a SIGTERM signal to the script. Because the script does not explicitly trap SIGTERM, Bash terminates immediately without executing the kill 0 trap. This leaves the voxtype status --follow command running endlessly in the background.

Steps to Reproduce

  1. Start Waybar with the voxtype module enabled.
  2. Trigger a Waybar reload (e.g., via omarchy restart waybar or saving a Waybar config file).
  3. Run pgrep -a -f "voxtype status" and observe that the old voxtype status --follow processes are still running.
  4. Repeat the reload multiple times to see the processes multiply.

Proposed Fix

Update the trap command to explicitly catch termination and interrupt signals in addition to EXIT.

Modify line 5 in omarchy-voxtype-status from:

trap 'kill 0' EXIT

to:

trap 'kill 0' EXIT SIGTERM SIGINT

This ensures the trap fires correctly regardless of how the script is stopped, properly terminating the child voxtype polling process.

View raw text
### System details

AMD 9850, Nvidia RTX 5080

### What's wrong?

# Bug Report: `omarchy-voxtype-status` Orphans Child Processes on Waybar Reloads

## Description
The `omarchy-voxtype-status` script fails to clean up its child processes when terminated by a system signal, such as when Waybar reloads. This causes orphaned `voxtype status --follow` processes to accumulate in the background over time, unnecessarily cluttering the process tree and consuming system resources.

## Root Cause
The script uses a `trap` to kill its child processes when it exits:
```bash
# File: ~/.local/share/omarchy/bin/omarchy-voxtype-status (Line 5)
trap 'kill 0' EXIT
```
However, in Bash, trapping `EXIT` only executes the cleanup command during a normal script termination. When Waybar reloads (or when the process is killed externally), it sends a `SIGTERM` signal to the script. Because the script does not explicitly trap `SIGTERM`, Bash terminates immediately without executing the `kill 0` trap. This leaves the `voxtype status --follow` command running endlessly in the background.

## Steps to Reproduce
1. Start Waybar with the `voxtype` module enabled.
2. Trigger a Waybar reload (e.g., via `omarchy restart waybar` or saving a Waybar config file).
3. Run `pgrep -a -f "voxtype status"` and observe that the old `voxtype status --follow` processes are still running.
4. Repeat the reload multiple times to see the processes multiply.

## Proposed Fix
Update the trap command to explicitly catch termination and interrupt signals in addition to `EXIT`. 

Modify line 5 in `omarchy-voxtype-status` from:
```bash
trap 'kill 0' EXIT
```
to:
```bash
trap 'kill 0' EXIT SIGTERM SIGINT
```

This ensures the trap fires correctly regardless of how the script is stopped, properly terminating the child `voxtype` polling process.

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.

No decision has been recorded yet.