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

Fingerprint unlock fails after every suspend (fprintd device stuck busy) and the shell retries every 250ms until unlock

Reported by callumau · filed Sep 12, 2026Closed upstream on 2026-10-04 by the bot omarchybot; the closing comment says it was fixed by PR #7158. GitHub close reason: completed.

Received and recorded verbatim. Nothing has been checked 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?
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

Fingerprint unlock fails after every suspend (fprintd device stuck busy) and the shell retries every 250ms until unlockrevision 1 · captured 2026-09-28 21:23 UTC via poll

System details

Framework Laptop 13 (AMD Ryzen 5 7640U), Goodix MOC Fingerprint Sensor, Omarchy 4.0.3-1, Hyprland 0.56.2-2, quickshell 0.3.1-1, kernel 7.2.3-arch1-3.

What's wrong?

Locking the session starts a fingerprint verify immediately (startFingerprint() on secureStateChanged). If the machine suspends while that verify is still in flight (typical lid-close flow: omarchy-sleep-lock secures the lock, logind suspends within a second or two), fingerprint unlock is dead after resume:

fprintd[...]: Device reported an error during verify: Cannot run while suspended.
quickshell[...]: pam_fprintd(omarchy-lock-fingerprint:auth): ReleaseDevice failed: Release failed with error: The device is still busy with another operation, please try again later.
omarchy-shell[...]: quickshell.service.pam.subprocess: Error while authenticating: "Authentication service cannot retrieve authentication info" (code 9)

Every retry then fails instantly, and fingerprintRetryTimer (interval: 250, non-repeat, restarted on every error) has no backoff and no retry cap: onError -> 250ms -> startFingerprint() -> error -> repeat. That is a PAM subprocess spawn 4x per second for the entire lock — frozen during suspend, resuming at wake. Observed continuously from resume at 12:34:09 until password unlock at 12:34:16; an overnight lock would mean tens of thousands of spawns.

User-visible effect: after every wake the fingerprint reader is unusable and the password must be typed, which also makes the post-resume lock-screen blanking (#11411) much more noticeable.

Steps to reproduce

  1. Enroll a fingerprint, configure it for the lock screen (omarchy setup security fingerprint).
  2. Lock the session and suspend within a few seconds (close the lid).
  3. Wake the machine and try the fingerprint sensor — nothing happens; watch journalctl --user -t omarchy-shell fill with PAM errors every ~250ms until unlock.

Expected

After resume the fingerprint verify is either cleanly restarted or retried with backoff; fingerprint unlock works, and there is no tight retry loop.

Actual

The stuck verify leaves fprintd's device busy; every retry errors instantly; the shell retries at 4Hz until the session is unlocked by other means.

Proposed fix

One or more of:

  • Add backoff and a cap to fingerprintRetryTimer (e.g. exponential up to a few seconds; stop after N consecutive immediate failures until the next state change such as resume or screens-changed).
  • Abort the in-flight verify on PrepareForSleep (or simply don't leave one pending across suspend), and start a fresh verify on resume instead of retrying into a stuck device.
  • Treat the fprintd "device busy" error class specially: wait for fprintd to settle instead of hammering it.

Related issues

  • #11411 — lock screen blanks ~5s after resume (the reason typing the password blind is needed at all)
  • #8361 — lock screen loses keyboard focus after resume
View raw text
### System details

Framework Laptop 13 (AMD Ryzen 5 7640U), Goodix MOC Fingerprint Sensor, Omarchy 4.0.3-1, Hyprland 0.56.2-2, quickshell 0.3.1-1, kernel 7.2.3-arch1-3.

### What's wrong?

Locking the session starts a fingerprint verify immediately (`startFingerprint()` on `secureStateChanged`). If the machine suspends while that verify is still in flight (typical lid-close flow: `omarchy-sleep-lock` secures the lock, logind suspends within a second or two), fingerprint unlock is dead after resume:

```
fprintd[...]: Device reported an error during verify: Cannot run while suspended.
quickshell[...]: pam_fprintd(omarchy-lock-fingerprint:auth): ReleaseDevice failed: Release failed with error: The device is still busy with another operation, please try again later.
omarchy-shell[...]: quickshell.service.pam.subprocess: Error while authenticating: "Authentication service cannot retrieve authentication info" (code 9)
```

Every retry then fails instantly, and `fingerprintRetryTimer` (`interval: 250`, non-repeat, restarted on every error) has **no backoff and no retry cap**: `onError` -> 250ms -> `startFingerprint()` -> error -> repeat. That is a PAM subprocess spawn 4x per second for the entire lock — frozen during suspend, resuming at wake. Observed continuously from resume at 12:34:09 until password unlock at 12:34:16; an overnight lock would mean tens of thousands of spawns.

User-visible effect: after every wake the fingerprint reader is unusable and the password must be typed, which also makes the post-resume lock-screen blanking (#11411) much more noticeable.

**Steps to reproduce**

1. Enroll a fingerprint, configure it for the lock screen (`omarchy setup security fingerprint`).
2. Lock the session and suspend within a few seconds (close the lid).
3. Wake the machine and try the fingerprint sensor — nothing happens; watch `journalctl --user -t omarchy-shell` fill with PAM errors every ~250ms until unlock.

**Expected**

After resume the fingerprint verify is either cleanly restarted or retried with backoff; fingerprint unlock works, and there is no tight retry loop.

**Actual**

The stuck verify leaves fprintd's device busy; every retry errors instantly; the shell retries at 4Hz until the session is unlocked by other means.

**Proposed fix**

One or more of:

- Add backoff and a cap to `fingerprintRetryTimer` (e.g. exponential up to a few seconds; stop after N consecutive immediate failures until the next state change such as resume or screens-changed).
- Abort the in-flight verify on `PrepareForSleep` (or simply don't leave one pending across suspend), and start a fresh verify on resume instead of retrying into a stuck device.
- Treat the fprintd "device busy" error class specially: wait for fprintd to settle instead of hammering it.

**Related issues**

- #11411 — lock screen blanks ~5s after resume (the reason typing the password blind is needed at all)
- #8361 — lock screen loses keyboard focus after resume

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

  • Related PRpr/11273· confirmed
  • Related PRpr/10653· confirmed

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.