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.
Crash: "Tried to show lockscreen surfaces without active lock" on shell restart
Reported by WalidBabi · filed Sep 2, 2026Closed upstream on 2026-09-21 by bjarneo via an automated message, as a duplicate of #9654 (R-1096). 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
Crash on shell restart
Quickshell (shell 0.3.1, Omarchy 4.0.1) crashes with SIGABRT in a
crash-restart-crash cycle during lock screen recovery.
FATAL message
FATAL: Tried to show lockscreen surfaces without active lockReproduction
- Shell crashes for any reason (or kills the quickshell process)
- omarchy-shell auto-restarts quickshell
- Lock recovery begins:
lock-stranded: recovering→lock-requested→lock-pending: screen-stabilizing WlSessionLockSurfaceis instantiated as a declarative child ofWlSessionLock
before sessionLock.locked is set to true
5. Quickshell C++ asserts the session lock is active → abort()
6. Shell restarts again → same crash
Root cause
WlSessionLockSurface in plugins/lock/Service.qml is a direct QML child ofWlSessionLock. QML instantiates it eagerly on component build, regardless ofsessionLock.locked. The surface must only exist after the compositor grants the
lock.
Suggested fix
Wrap WlSessionLockSurface in a Loader gated on sessionLock.locked || sessionLock.secure:
Loader {
active: sessionLock.locked || sessionLock.secure
sourceComponent: Component {
WlSessionLockSurface {
color: Color.background
LockView { /* ... */ }
}
}
}Stack (symbolized)
#5 QDebug::~QDebug()
#6 quickshell + 0x832b3
#9 QQmlPropertyPrivate::write()
#27 QQmlTimer::event()3 crashes observed: Aug 30, Sep 2 15:14, Sep 2 15:18 (crash→restart→crash).
System: Omarchy 4.0.1, quickshell 0.3.1-1, Qt 6.11.2, Intel+NVIDIA hybrid GPU.
Filed by opencode/big-pickle via opencode.
View raw text
## Crash on shell restart
Quickshell (shell 0.3.1, Omarchy 4.0.1) crashes with SIGABRT in a
crash-restart-crash cycle during lock screen recovery.
### FATAL message
```
FATAL: Tried to show lockscreen surfaces without active lock
```
### Reproduction
1. Shell crashes for any reason (or kills the quickshell process)
2. omarchy-shell auto-restarts quickshell
3. Lock recovery begins: `lock-stranded: recovering` → `lock-requested` → `lock-pending: screen-stabilizing`
4. `WlSessionLockSurface` is instantiated as a declarative child of `WlSessionLock`
before `sessionLock.locked` is set to `true`
5. Quickshell C++ asserts the session lock is active → `abort()`
6. Shell restarts again → same crash
### Root cause
`WlSessionLockSurface` in `plugins/lock/Service.qml` is a direct QML child of
`WlSessionLock`. QML instantiates it eagerly on component build, regardless of
`sessionLock.locked`. The surface must only exist after the compositor grants the
lock.
### Suggested fix
Wrap `WlSessionLockSurface` in a `Loader` gated on `sessionLock.locked || sessionLock.secure`:
```qml
Loader {
active: sessionLock.locked || sessionLock.secure
sourceComponent: Component {
WlSessionLockSurface {
color: Color.background
LockView { /* ... */ }
}
}
}
```
### Stack (symbolized)
```
#5 QDebug::~QDebug()
#6 quickshell + 0x832b3
#9 QQmlPropertyPrivate::write()
#27 QQmlTimer::event()
```
3 crashes observed: Aug 30, Sep 2 15:14, Sep 2 15:18 (crash→restart→crash).
System: Omarchy 4.0.1, quickshell 0.3.1-1, Qt 6.11.2, Intel+NVIDIA hybrid GPU.
Filed by opencode/big-pickle via opencode.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.