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.
Quickshell segfaults in QQuickRepeater incubation during rapid PipeWire volume-scroll / OSD toggling
Reported by Vann06-2005 · filed Sep 6, 2026Closed upstream on 2026-09-20 by bjarneo via an automated message, as a duplicate of #6952 (R-1843). GitHub close reason: completed.
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
What happened
Quickshell (PID 146463) segfaulted (SIGSEGV) while the volume OSD was
being driven by a fast scroll gesture. The event-loop tail immediately
before the crash (from ~/.cache/quickshell/crashes/<run>/report.txt)
shows:
- Three rapid PipeWire volume updates on the default sink
(0.799988 → 0.75 → 0.699997)
2. A Hyprland closelayer>>omarchy-osd event (the OSD popup dismissing)
3. A fresh IPC connection
4. Crash
Expected
Scrolling to adjust volume quickly should never crash the shell.
Crash mechanism (from Quickshell's own symbolized crash report)
The fault is inside Qt's QML engine, reached via:
QQuickRepeater::setModel → regenerate() → incubate a new delegate
→ QQmlObjectCreator::createInstance → evaluate a QML module
→ typeof lookup on a context property
→ QV4::QObjectWrapper::getQmlProperty → crash inside libQt6QmlModels.so.6
i.e. a Repeater's model was reset and Qt began incubating a new
delegate while a property lookup against the QML context for that new
object hit invalid/torn-down state — consistent with a live data
update racing in-flight QML object construction.
Why this looks like it's in Omarchy's sphere
plugins/panels/audio/Panel.qml (lines 103-107) already documents and
works around this exact failure class:
"Feed Repeaters with panel-local snapshots instead of the live PipeWire model. PipeWire can remove nodes while Quickshell is dispatching the removal signal; rebuilding a Repeater from that signal path has crashed in Quickshell's PipeWire service."
That workaround (a debounced snapshot instead of live PipeWire
signals) only covers the audio panel's own Repeaters. This crash
happened via the volume-scroll/OSD path instead, suggesting another
Repeater fed by live PipeWire/indicator state elsewhere in the shell
plugins doesn't have the same protection. I wasn't able to identify
the exact QML file from the backtrace alone, since the crashing frames
are all inside Qt/Quickshell engine code — only the timing points at
the trigger.
System details
- omarchy version: 4.0.2-1
- quickshell: 0.3.1-1 (Qt 6.11.2, RelWithDebInfo)
- GPU: Intel (i915) + NVIDIA (nvidia-drm) hybrid
omarchy debugis not available as a command in this version, so no
omarchy-debug.log is attached.
- Single occurrence — not reproduced on demand, no OOM, no package
update at the time of the crash. Quickshell auto-restarted itself
immediately; no user-visible data loss.
Reproduction
Not reliably reproducible on demand. Occurred once during ordinary use
while scrolling to change volume quickly (mouse wheel over the volume
indicator), which caused several PipeWire volume updates and an
OSD show/hide in quick succession.
Filed by Claude Sonnet 5 via Claude Code.
View raw text
## What happened
Quickshell (PID 146463) segfaulted (SIGSEGV) while the volume OSD was
being driven by a fast scroll gesture. The event-loop tail immediately
before the crash (from `~/.cache/quickshell/crashes/<run>/report.txt`)
shows:
1. Three rapid PipeWire volume updates on the default sink
(0.799988 → 0.75 → 0.699997)
2. A Hyprland `closelayer>>omarchy-osd` event (the OSD popup dismissing)
3. A fresh IPC connection
4. Crash
## Expected
Scrolling to adjust volume quickly should never crash the shell.
## Crash mechanism (from Quickshell's own symbolized crash report)
The fault is inside Qt's QML engine, reached via:
QQuickRepeater::setModel → regenerate() → incubate a new delegate
→ QQmlObjectCreator::createInstance → evaluate a QML module
→ typeof lookup on a context property
→ QV4::QObjectWrapper::getQmlProperty → crash inside libQt6QmlModels.so.6
i.e. a `Repeater`'s model was reset and Qt began incubating a new
delegate while a property lookup against the QML context for that new
object hit invalid/torn-down state — consistent with a live data
update racing in-flight QML object construction.
## Why this looks like it's in Omarchy's sphere
`plugins/panels/audio/Panel.qml` (lines 103-107) already documents and
works around this exact failure class:
> "Feed Repeaters with panel-local snapshots instead of the live
> PipeWire model. PipeWire can remove nodes while Quickshell is
> dispatching the removal signal; rebuilding a Repeater from that
> signal path has crashed in Quickshell's PipeWire service."
That workaround (a debounced snapshot instead of live PipeWire
signals) only covers the audio panel's own Repeaters. This crash
happened via the volume-scroll/OSD path instead, suggesting another
Repeater fed by live PipeWire/indicator state elsewhere in the shell
plugins doesn't have the same protection. I wasn't able to identify
the exact QML file from the backtrace alone, since the crashing frames
are all inside Qt/Quickshell engine code — only the timing points at
the trigger.
## System details
- omarchy version: 4.0.2-1
- quickshell: 0.3.1-1 (Qt 6.11.2, RelWithDebInfo)
- GPU: Intel (i915) + NVIDIA (nvidia-drm) hybrid
- `omarchy debug` is not available as a command in this version, so no
`omarchy-debug.log` is attached.
- Single occurrence — not reproduced on demand, no OOM, no package
update at the time of the crash. Quickshell auto-restarted itself
immediately; no user-visible data loss.
## Reproduction
Not reliably reproducible on demand. Occurred once during ordinary use
while scrolling to change volume quickly (mouse wheel over the volume
indicator), which caused several PipeWire volume updates and an
OSD show/hide in quick succession.
---
Filed by Claude Sonnet 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.
No decision has been recorded yet.