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

Omarchy shell SIGABRT on idle lock after quickshell 0.3.1 / Qt 6.11.2 update: "FATAL: Tried to show lockscreen surfaces without active lock" (+ one SIGSEGV in __dynamic_cast at startup)

Reported by asami-me · filed Aug 27, 2026 · open at source

Partly in the audited area (lock) — decided by agents · verified. Not validated 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?
AreaPartly in the audited arealock· 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?
Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. So far: partly in the audited area (lock) — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.

Original report

Omarchy shell SIGABRT on idle lock after quickshell 0.3.1 / Qt 6.11.2 update: "FATAL: Tried to show lockscreen surfaces without active lock" (+ one SIGSEGV in __dynamic_cast at startup)revision 1 · captured 2026-09-28 21:24 UTC via poll

What happened

After today's update (2026-08-27 14:08: quickshell-git 0.3.0.r20 → quickshell 0.3.1-1,
Qt → 6.11.2, omarchy 4.0.0 → 4.0.1; reboot 14:09), the Omarchy shell crashed 6 times.
Zero quickshell coredumps exist on this machine before today.

Recurring mode — SIGABRT ×5 (18:51–19:10), identical every time, during the
idle/screensaver/lock cycle:

FATAL: Tried to show lockscreen surfaces without active lock

#3  abort
#5  QDebug::~QDebug()
#6  quickshell (+0x832b3)          ← qFatal message flush
#7  quickshell (+0x2240c2)
#9  QQmlPropertyPrivate::write
#10 QV4::QObjectWrapper::setProperty
#13 QV4::Lookup::setterFallback
#22 QQmlJavaScriptExpression::evaluate
#23 QQmlBoundSignalExpression::evaluate
#25 QQmlNotifier::emitNotify
#27 QQmlTimer::event

i.e. a QML signal handler (timer-driven) writes a property; quickshell's lock code
hits the qFatal. Five reports in ~/.cache/quickshell/crashes/ (6wtwafkt, 8on4fxnfkt,
8on4o0ofkt, 8on4i7ofkt, d8951oofkt), all with the same fatal and stack.

One-off mode — SIGSEGV 21:57:37, 4 s after launch, amid session-restart churn
(shell exited twice via IPC requests in the preceding 5 s):

#4  __dynamic_cast (libstdc++)
#5  quickshell (+0x16420b)
#6  quickshell (+0x167713)
#7  QQmlObjectCreator::finalize
#8  QQmlIncubatorPrivate::incubate
#9  QQmlIncubationController::incubateFor

Supervisor correctly refused immediate restart ("crashed within 10 seconds of
launching"); next relaunch came up clean and is still running.

Expected

The shell survives idle→screensaver→lock transitions. Attempting to show lockscreen
surfaces without an active lock should not abort the whole shell.

Reproduce

Default idle cycle (screensaver=150 lock=300) on stock 4.0.1: 5 aborts in 20 minutes
across 5 lock transitions. The SIGSEGV reproduced once during rapid shell
relaunch (session restart); not reliably reproducible.

Not the same as existing issues

  • #8453: EGL_BAD_ALLOC / NVIDIA VRAM aborts — different fatal, Intel i915 here, no EGL errors.
  • #6628: Hyprland kills the client (protocol error, exit 255) — different mechanism.
  • #6995: ttfx pty EIO abort — different program.
  • #7750: startup SIGSEGV in QUntypedPropertyBinding under QQmlObjectCreator — same

phase, different faulting symbol and no property binding in this stack.

Environment

  • omarchy 4.0.1-1, quickshell 0.3.1-1 (first release run on this machine), qt6-declarative 6.11.2-1, qt6-wayland 6.11.2-1
  • Hyprland 0.56.2-1, linux 7.1.9.arch1-2, Intel Broadwell-U GT3 (i915, 8086:162b)
  • Shell ID c0240dfe8c8e8a421e1f8db23a03fc60; config /usr/share/omarchy/shell (untouched by me)
  • Full crash reports: ~/.cache/quickshell/crashes/{6wtwafkt,133axjwfkt}/report.txt; coredumps retained in /var/lib/systemd/coredump for both signals

omarchy debug is not an available command on 4.0.1 ("Unknown Omarchy command"), so the
above comes from systemd-coredump + quickshell's own crash reports instead.

Filed by GLM (glm-5.3-flash) via opencode.

View raw text
## What happened

After today's update (2026-08-27 14:08: quickshell-git 0.3.0.r20 → quickshell 0.3.1-1,
Qt → 6.11.2, omarchy 4.0.0 → 4.0.1; reboot 14:09), the Omarchy shell crashed 6 times.
Zero quickshell coredumps exist on this machine before today.

**Recurring mode — SIGABRT ×5 (18:51–19:10), identical every time**, during the
idle/screensaver/lock cycle:

```
FATAL: Tried to show lockscreen surfaces without active lock

#3  abort
#5  QDebug::~QDebug()
#6  quickshell (+0x832b3)          ← qFatal message flush
#7  quickshell (+0x2240c2)
#9  QQmlPropertyPrivate::write
#10 QV4::QObjectWrapper::setProperty
#13 QV4::Lookup::setterFallback
#22 QQmlJavaScriptExpression::evaluate
#23 QQmlBoundSignalExpression::evaluate
#25 QQmlNotifier::emitNotify
#27 QQmlTimer::event
```

i.e. a QML signal handler (timer-driven) writes a property; quickshell's lock code
hits the qFatal. Five reports in ~/.cache/quickshell/crashes/ (6wtwafkt, 8on4fxnfkt,
8on4o0ofkt, 8on4i7ofkt, d8951oofkt), all with the same fatal and stack.

**One-off mode — SIGSEGV 21:57:37**, 4 s after launch, amid session-restart churn
(shell exited twice via IPC requests in the preceding 5 s):

```
#4  __dynamic_cast (libstdc++)
#5  quickshell (+0x16420b)
#6  quickshell (+0x167713)
#7  QQmlObjectCreator::finalize
#8  QQmlIncubatorPrivate::incubate
#9  QQmlIncubationController::incubateFor
```

Supervisor correctly refused immediate restart ("crashed within 10 seconds of
launching"); next relaunch came up clean and is still running.

## Expected

The shell survives idle→screensaver→lock transitions. Attempting to show lockscreen
surfaces without an active lock should not abort the whole shell.

## Reproduce

Default idle cycle (screensaver=150 lock=300) on stock 4.0.1: 5 aborts in 20 minutes
across 5 lock transitions. The SIGSEGV reproduced once during rapid shell
relaunch (session restart); not reliably reproducible.

## Not the same as existing issues

- #8453: EGL_BAD_ALLOC / NVIDIA VRAM aborts — different fatal, Intel i915 here, no EGL errors.
- #6628: Hyprland kills the client (protocol error, exit 255) — different mechanism.
- #6995: ttfx pty EIO abort — different program.
- #7750: startup SIGSEGV in QUntypedPropertyBinding under QQmlObjectCreator — same
  phase, different faulting symbol and no property binding in this stack.

## Environment

- omarchy 4.0.1-1, quickshell 0.3.1-1 (first release run on this machine), qt6-declarative 6.11.2-1, qt6-wayland 6.11.2-1
- Hyprland 0.56.2-1, linux 7.1.9.arch1-2, Intel Broadwell-U GT3 (i915, 8086:162b)
- Shell ID c0240dfe8c8e8a421e1f8db23a03fc60; config /usr/share/omarchy/shell (untouched by me)
- Full crash reports: ~/.cache/quickshell/crashes/{6wtwafkt,133axjwfkt}/report.txt; coredumps retained in /var/lib/systemd/coredump for both signals

`omarchy debug` is not an available command on 4.0.1 ("Unknown Omarchy command"), so the
above comes from systemd-coredump + quickshell's own crash reports instead.

Filed by GLM (glm-5.3-flash) 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.

  • Decided by agents · verified: partly in the audited area (lock)

The outcome (valid, duplicate, not a bug, …) is not decided yet.