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 repeatedly SIGSEGVs in QML binding evaluation after keyboard-panel config updates
Reported by nkamenar · filed Sep 2, 2026 · open at source
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
The Omarchy shell's quickshell process crashed three times with SIGSEGV on 2026-09-01:
- 16:29:29 EDT
- 21:41:22 EDT
- 21:42:32 EDT
The latter two crashes have effectively identical Qt/QML stacks. Quickshell restarted automatically after each crash, and no user-data loss was observed.
Trigger and timeline
Before the 21:42:32 crash, the Quickshell log recorded the Omarchy keyboard-panel layers opening and closing:
openlayer>>omarchy-keyboard-panel-dismiss
openlayer>>omarchy-keyboard-panel
closelayer>>omarchy-keyboard-panel-dismiss
closelayer>>omarchy-keyboard-panelThe shell then repeatedly saved and reloaded the Omarchy configuration:
21:42:20 save ~/.config/omarchy/shell.json
21:42:22 save and reload
21:42:24 save and reload
21:42:27 save and reload
21:42:29 save and reload
21:42:32 SIGSEGVThe resulting shell.json remains valid. There are no user-installed Omarchy shell plugins.
The evidence establishes the keyboard-panel/config-update sequence immediately before the crash, but does not identify which individual setting or QML expression is responsible.
Expected behavior
Changing shell/bar settings through the shipped keyboard panel should update shell.json without terminating and restarting Quickshell.
Actual behavior
Quickshell crashes on its main GUI thread while Qt is updating an animation and reevaluating a QML binding.
Relevant stack
The first two frames below are Quickshell's crash handler re-raising the original SIGSEGV. The relevant fault begins inside libQt6Qml:
raise
quickshell crash handler
<signal handler called>
libQt6Qml.so.6
JIT-generated QML code
QV4::Runtime::CallQmlContextPropertyLookup::call
JIT-generated QML code
QV4::Runtime::CallPropertyLookup::call
JIT-generated QML code
QQmlJavaScriptExpression::evaluate
QQmlBinding::evaluate
QQmlBinding::doUpdate
QQmlBinding::update
QQmlNotifier::emitNotify
QQmlPropertyPrivate::write
QQmlPropertyPrivate::writeValueProperty
libQt6Quick.so.6
QAbstractAnimationJob::setCurrentTime
QQmlAnimationTimer::updateAnimationsTime
QUnifiedTimer::updateAnimationTimersThe 21:41:22 and 21:42:32 crashes have the same relevant stack shape and offsets. The JIT-generated frames could not be resolved to a specific QML source expression.
Quickshell's report for the second crash is retained at:
~/.cache/quickshell/crashes/41z4xcrpkt/report.txtThe preceding matching report is retained at:
~/.cache/quickshell/crashes/41z4p3rpkt/report.txtCauses ruled out
- Approximately 86 GiB RAM was available.
- Swap was unused.
- No OOM kill occurred.
- No contemporaneous NVIDIA XID or GPU-reset error was found.
- The crash occurs on the GUI/QML thread, not the render thread.
System details
- Omarchy 4.0.2-1
- Linux 7.1.9-arch1-2
- Quickshell 0.3.1-1
- Qt Base 6.11.2-2
- Qt Declarative 6.11.2-1
- Qt Wayland 6.11.2-1
- NVIDIA driver 610.57.04
- NVIDIA GeForce RTX 4080
- Intel Core i9-14900K
- Three monitors under Wayland/Hyprland
- Shell config:
/usr/share/omarchy/shell/shell.qml - No user shell plugins
omarchy debug --no-sudo --print was attempted, but Omarchy 4.0.2 reports that this command does not exist.
Duplicate search
This differs from:
- #8488: Mesa
dri2_query_imagecrash on the render thread when a keyboard panel opens. - #7098: menu typing enters through
QQuickKeysAttachedandQQmlListModel::append. - #9647: PipeWire device teardown enters through an audio-panel
QQuickRepeater. - #8730: Wi-Fi disablement and access-point object teardown.
None has this animation-timer/property-write stack combined with repeated shell.json updates.
Filed by GPT-5 via Codex.
View raw text
## What happened The Omarchy shell's `quickshell` process crashed three times with SIGSEGV on 2026-09-01: - 16:29:29 EDT - 21:41:22 EDT - 21:42:32 EDT The latter two crashes have effectively identical Qt/QML stacks. Quickshell restarted automatically after each crash, and no user-data loss was observed. ## Trigger and timeline Before the 21:42:32 crash, the Quickshell log recorded the Omarchy keyboard-panel layers opening and closing: ```text openlayer>>omarchy-keyboard-panel-dismiss openlayer>>omarchy-keyboard-panel closelayer>>omarchy-keyboard-panel-dismiss closelayer>>omarchy-keyboard-panel ``` The shell then repeatedly saved and reloaded the Omarchy configuration: ```text 21:42:20 save ~/.config/omarchy/shell.json 21:42:22 save and reload 21:42:24 save and reload 21:42:27 save and reload 21:42:29 save and reload 21:42:32 SIGSEGV ``` The resulting `shell.json` remains valid. There are no user-installed Omarchy shell plugins. The evidence establishes the keyboard-panel/config-update sequence immediately before the crash, but does not identify which individual setting or QML expression is responsible. ## Expected behavior Changing shell/bar settings through the shipped keyboard panel should update `shell.json` without terminating and restarting Quickshell. ## Actual behavior Quickshell crashes on its main GUI thread while Qt is updating an animation and reevaluating a QML binding. ## Relevant stack The first two frames below are Quickshell's crash handler re-raising the original SIGSEGV. The relevant fault begins inside `libQt6Qml`: ```text raise quickshell crash handler <signal handler called> libQt6Qml.so.6 JIT-generated QML code QV4::Runtime::CallQmlContextPropertyLookup::call JIT-generated QML code QV4::Runtime::CallPropertyLookup::call JIT-generated QML code QQmlJavaScriptExpression::evaluate QQmlBinding::evaluate QQmlBinding::doUpdate QQmlBinding::update QQmlNotifier::emitNotify QQmlPropertyPrivate::write QQmlPropertyPrivate::writeValueProperty libQt6Quick.so.6 QAbstractAnimationJob::setCurrentTime QQmlAnimationTimer::updateAnimationsTime QUnifiedTimer::updateAnimationTimers ``` The 21:41:22 and 21:42:32 crashes have the same relevant stack shape and offsets. The JIT-generated frames could not be resolved to a specific QML source expression. Quickshell's report for the second crash is retained at: ```text ~/.cache/quickshell/crashes/41z4xcrpkt/report.txt ``` The preceding matching report is retained at: ```text ~/.cache/quickshell/crashes/41z4p3rpkt/report.txt ``` ## Causes ruled out - Approximately 86 GiB RAM was available. - Swap was unused. - No OOM kill occurred. - No contemporaneous NVIDIA XID or GPU-reset error was found. - The crash occurs on the GUI/QML thread, not the render thread. ## System details - Omarchy 4.0.2-1 - Linux 7.1.9-arch1-2 - Quickshell 0.3.1-1 - Qt Base 6.11.2-2 - Qt Declarative 6.11.2-1 - Qt Wayland 6.11.2-1 - NVIDIA driver 610.57.04 - NVIDIA GeForce RTX 4080 - Intel Core i9-14900K - Three monitors under Wayland/Hyprland - Shell config: `/usr/share/omarchy/shell/shell.qml` - No user shell plugins `omarchy debug --no-sudo --print` was attempted, but Omarchy 4.0.2 reports that this command does not exist. ## Duplicate search This differs from: - #8488: Mesa `dri2_query_image` crash on the render thread when a keyboard panel opens. - #7098: menu typing enters through `QQuickKeysAttached` and `QQmlListModel::append`. - #9647: PipeWire device teardown enters through an audio-panel `QQuickRepeater`. - #8730: Wi-Fi disablement and access-point object teardown. None has this animation-timer/property-write stack combined with repeated `shell.json` updates. Filed by GPT-5 via Codex.
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 10:33 UTC