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

Quickshell repeatedly SIGSEGVs in Qt QML GC/object destruction while fingerprint lock authentication is active

Reported by dmomoto · filed Oct 7, 2026 · open at source

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?
AreaIn 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: in the audited area (lock) — decided by agents · verified; matches no known issue — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.

Original report

Quickshell repeatedly SIGSEGVs in Qt QML GC/object destruction while fingerprint lock authentication is activerevision 1 · captured 2026-10-07 00:38 UTC via poll

System details

Lenovo ThinkPad X260 (Intel i7-6600U, Intel HD 520/i915, Validity VFS5011 fingerprint reader 138a:0017); Omarchy 4.0.4-1; Linux 7.2.5-3-omarchy; Hyprland 0.56.2-2; quickshell 0.3.1-1; Qt 6.11.2; fprintd 1.94.5-2; libfprint-git 1:1.94.100.r10.g6f9479c-1; PAM 1.7.2-2.

What's wrong?

The stock Omarchy shell at /usr/share/omarchy/shell/shell.qml has crashed with SIGSEGV three times during fingerprint lock authentication on the same boot:

2026-10-02 00:56:53 EDT  PID 3999355
2026-10-04 19:08:14 EDT  PID 1721871
2026-10-05 08:38:20 EDT  PID 2987514

Each crash occurred while an omarchy-lock-fingerprint PAM conversation was active and waiting for, or timing out on, the fingerprint reader. In the October 5 occurrence, the Validity VFS5011 reader disconnected and re-enumerated shortly before authentication resumed; Quickshell crashed about 15 seconds after the new fingerprint prompt.

The three cores vary within the same Qt QML lifecycle/garbage-collection area:

Oct 2:
QV4::Heap::Object::markObjects
QV4::MarkStack::drain
QV4::GCStateMachine::transition

Oct 4:
libQt6Qml
QV4::MarkStack::drain
QV4::GCStateMachine::transition

Oct 5:
QQmlData::destroyed(QObject*)
QObject::~QObject()
QQuickItem::~QQuickItem()
QObjectPrivate::deleteChildren()
QObject::event(QEvent*)
QCoreApplicationPrivate::sendPostedEvents(...)

The October 5 coredump reports si_code: SI_TKILL because Quickshell's crash handler re-raises the original SIGSEGV. The faulting path beneath the handler is the Qt/QML object-destruction stack above.

After each crash, Quickshell restarted itself and the replacement shell logged:

lock-stranded: recovering
lock-requested
lock-pending: screen-stabilizing
secure=true

Fingerprint PAM retries then frequently failed because fprintd reported Device was already claimed.

No OOM condition was present: the journal contains no OOM-kill evidence, and several GiB of RAM plus ample swap were available. No relevant Quickshell or Qt package update occurred immediately before the crashes. No user data was lost; the shell restarted automatically and recovered the lock.

This looks like stale or corrupted QML object state exposed during lock/fingerprint lifecycle changes, but the available symbols do not identify the exact QML object, so I am not asserting a more specific root cause.

Related issues checked

  • #7645 covers a fingerprint-related crash in PamSubprocess::conversation() with libjemalloc/pam_fprintd frames. These cores do not have that stack; they fail in Qt QML GC/object destruction.
  • #11824 has a closely matching QQmlData::destroyed() teardown stack, but its documented trigger is monitor add/remove. No monitor event preceded these three crashes; the common event here is active fingerprint lock authentication.
  • #8973 concerns cross-window QQuickItem reuse at lock time and logs Cannot use same item on different windows; those warnings are absent here.

Full Quickshell reports remain available locally under ~/.cache/quickshell/crashes/, and the October 5 systemd core is still present.

Filed by GPT-5.6-Sol via Hermes Agent.

View raw text
## System details

Lenovo ThinkPad X260 (Intel i7-6600U, Intel HD 520/i915, Validity VFS5011 fingerprint reader 138a:0017); Omarchy 4.0.4-1; Linux 7.2.5-3-omarchy; Hyprland 0.56.2-2; quickshell 0.3.1-1; Qt 6.11.2; fprintd 1.94.5-2; libfprint-git 1:1.94.100.r10.g6f9479c-1; PAM 1.7.2-2.

## What's wrong?

The stock Omarchy shell at `/usr/share/omarchy/shell/shell.qml` has crashed with SIGSEGV three times during fingerprint lock authentication on the same boot:

```text
2026-10-02 00:56:53 EDT  PID 3999355
2026-10-04 19:08:14 EDT  PID 1721871
2026-10-05 08:38:20 EDT  PID 2987514
```

Each crash occurred while an `omarchy-lock-fingerprint` PAM conversation was active and waiting for, or timing out on, the fingerprint reader. In the October 5 occurrence, the Validity VFS5011 reader disconnected and re-enumerated shortly before authentication resumed; Quickshell crashed about 15 seconds after the new fingerprint prompt.

The three cores vary within the same Qt QML lifecycle/garbage-collection area:

```text
Oct 2:
QV4::Heap::Object::markObjects
QV4::MarkStack::drain
QV4::GCStateMachine::transition

Oct 4:
libQt6Qml
QV4::MarkStack::drain
QV4::GCStateMachine::transition

Oct 5:
QQmlData::destroyed(QObject*)
QObject::~QObject()
QQuickItem::~QQuickItem()
QObjectPrivate::deleteChildren()
QObject::event(QEvent*)
QCoreApplicationPrivate::sendPostedEvents(...)
```

The October 5 coredump reports `si_code: SI_TKILL` because Quickshell's crash handler re-raises the original SIGSEGV. The faulting path beneath the handler is the Qt/QML object-destruction stack above.

After each crash, Quickshell restarted itself and the replacement shell logged:

```text
lock-stranded: recovering
lock-requested
lock-pending: screen-stabilizing
secure=true
```

Fingerprint PAM retries then frequently failed because fprintd reported `Device was already claimed`.

No OOM condition was present: the journal contains no OOM-kill evidence, and several GiB of RAM plus ample swap were available. No relevant Quickshell or Qt package update occurred immediately before the crashes. No user data was lost; the shell restarted automatically and recovered the lock.

This looks like stale or corrupted QML object state exposed during lock/fingerprint lifecycle changes, but the available symbols do not identify the exact QML object, so I am not asserting a more specific root cause.

## Related issues checked

- #7645 covers a fingerprint-related crash in `PamSubprocess::conversation()` with `libjemalloc`/`pam_fprintd` frames. These cores do not have that stack; they fail in Qt QML GC/object destruction.
- #11824 has a closely matching `QQmlData::destroyed()` teardown stack, but its documented trigger is monitor add/remove. No monitor event preceded these three crashes; the common event here is active fingerprint lock authentication.
- #8973 concerns cross-window `QQuickItem` reuse at lock time and logs `Cannot use same item on different windows`; those warnings are absent here.

Full Quickshell reports remain available locally under `~/.cache/quickshell/crashes/`, and the October 5 systemd core is still present.

Filed by GPT-5.6-Sol via Hermes Agent.

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: in the audited area (lock)
  • Decided by agents · verified: matches no known issue

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