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 SIGSEGV in QFactoryLoader::metaDataKeys after hibernate resume when opening omarchy-menu
Reported by igor-gorohovsky · filed Sep 1, 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?
- 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. So far: matches no known issue — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.
Original report
What happened
The Omarchy shell (quickshell -n -p /usr/share/omarchy/shell) SIGSEGV'd 15 seconds after resume from hibernate, while opening omarchy-menu. Quickshell's crash handler caught the fault and re-raised it (si_code: SI_TKILL). The shell auto-restarted; no user data was lost.
This is a one-off of this stack on this machine. Earlier local quickshell dumps are a different karaoke IdleInhibitor destructor and a session-lock abort.
Expected
Opening the Omarchy menu after hibernate resume should load app icons without killing the shell.
Steps to reproduce
Not confirmed as 100% reliable (this stack has happened once here), but the timeline is tight:
- Hibernate the machine (this session slept ~14h).
- Resume.
- Within ~15 seconds, open the Omarchy menu.
- Shell dies in
QQuickPixmapReaderwhile decoding an app icon.
On this machine the job in flight was:
/usr/share/icons/hicolor/scalable/apps/one.alynx.showmethekey.svg(showmethekey 1.21.0-1). The file is a normal intact SVG; the crash is not a corrupt icon.
Stack (symbolized)
Crashing thread is Qt's QQuickPixmapReader. The original fault is QIODevice::read(this=0x1) — a garbage device pointer, not a typical heap UAF address — while QFactoryLoader parses static plugin CBOR metadata to satisfy QImageReader::imageCount().
#3 qs::crash::signalHandler (sig=11) at quickshell/src/crash/handler.cpp:93
#4 <signal handler called>
#5–#8 QIODevice::read (this=0x1, maxSize=46) at qtbase/src/corelib/io/qiodevice.cpp:1003
#9–#14 QCborStreamReader::readAllString() at qtbase/src/corelib/serialization/qcborstreamreader.cpp
#15–#18 iterateInPluginMetaData / QFactoryLoaderMetaDataKeysExtractor
#19 QFactoryLoader::metaDataKeys() at qtbase/src/corelib/plugin/qfactoryloader.cpp:537
#20 QFactoryLoader::keyMap() at qtbase/src/corelib/plugin/qfactoryloader.cpp:596
#23 QImageReader::imageCount() const
#24 readImage(...) at qtdeclarative/.../qquickpixmapcache.cpp:512
#25 QQuickPixmapReader::processJob (...)
localFile = "/usr/share/icons/hicolor/scalable/apps/one.alynx.showmethekey.svg"
#26 QQuickPixmapReader::processJobs
#41 QQuickPixmapReader::runThe systemd-coredump contains only this LWP (the pixmap-reader thread). Other in-flight work is not in the dump.
Last Quickshell log line before the crash:
DEBUG quickshell.hyprland.ipc.events: Received event: "openlayer>>omarchy-menu"plugins/menu/Menu.qml loads those icons with a normal Image { asynchronous: true; source: appLibrary.iconSource(...) }.
What this is / is not
Proved: the SIGSEGV is inside Qt 6.11.2 (QFactoryLoader / QCborStreamReader), hosted by Omarchy's bundled shell, triggered by menu icon decode after hibernate resume.
Not proved: whether hibernate left plugin-metadata state corrupt, or the menu's burst of icon loads just hit a latent Qt bug. The dump cannot distinguish those.
Not the same as:
- #7098 — omarchy-menu crash, but QML JIT while typing
- #8026 — same
QQuickPixmapReaderthread, but OpenSSL while loading HTTPS album art
The immediate fault is in Qt; the user-facing trigger is Omarchy's shell/menu. Filing here because this is the Omarchy-shipped Quickshell config (/usr/share/omarchy/shell).
System details
omarchy version: 4.0.2-1- Kernel: 7.1.9-arch1-2
- Hyprland 0.56.2-1
- quickshell 0.3.1-1
- qt6-base 6.11.2-2, qt6-declarative 6.11.2-1, qt6-svg 6.11.2-1, qt6-imageformats 6.11.2-1
- GPU: AMD Radeon RX 9070 XT (amdgpu, Navi 48), MODE1 reset on this resume
- CPU: AMD Ryzen 9 5900X
- Desktop: Gigabyte X570 AORUS MASTER, Wayland / Hyprland, 3840x2160
omarchy-debug --no-sudo --print was run at 2026-09-01 10:56 EEST and wrote /tmp/omarchy-debug.log (113 KiB). Relevant excerpt:
Hostname: omarchy
Omarchy Package: omarchy 4.0.2-1
Kernel 7.1.9-arch1-2 x86_64
Desktop Hyprland v 0.56.2 Distro Omarchy
Machine: Desktop Gigabyte X570 AORUS MASTER
CPU: AMD Ryzen 9 5900X 12 cores / 24 threads
Graphics: AMD Navi 48 [Radeon RX 9070/9070 XT] driver amdgpu
Display: wayland compositor Hyprland 0.56.2 Monitor DP-3 3840x2160
Memory: 32 GiBQuickshell's own crash report is at ~/.cache/quickshell/crashes/p619ajmkt/ (report.txt + log.qslog.log). systemd-coredump pid 287958.
Filed by Grok 4.6 via Grok Build.
View raw text
## What happened
The Omarchy shell (`quickshell -n -p /usr/share/omarchy/shell`) SIGSEGV'd 15 seconds after resume from hibernate, while opening `omarchy-menu`. Quickshell's crash handler caught the fault and re-raised it (`si_code: SI_TKILL`). The shell auto-restarted; no user data was lost.
This is a one-off of this stack on this machine. Earlier local quickshell dumps are a different karaoke `IdleInhibitor` destructor and a session-lock abort.
## Expected
Opening the Omarchy menu after hibernate resume should load app icons without killing the shell.
## Steps to reproduce
Not confirmed as 100% reliable (this stack has happened once here), but the timeline is tight:
1. Hibernate the machine (this session slept ~14h).
2. Resume.
3. Within ~15 seconds, open the Omarchy menu.
4. Shell dies in `QQuickPixmapReader` while decoding an app icon.
On this machine the job in flight was:
```
/usr/share/icons/hicolor/scalable/apps/one.alynx.showmethekey.svg
```
(`showmethekey 1.21.0-1`). The file is a normal intact SVG; the crash is not a corrupt icon.
## Stack (symbolized)
Crashing thread is Qt's `QQuickPixmapReader`. The original fault is `QIODevice::read(this=0x1)` — a garbage device pointer, not a typical heap UAF address — while `QFactoryLoader` parses **static plugin** CBOR metadata to satisfy `QImageReader::imageCount()`.
```
#3 qs::crash::signalHandler (sig=11) at quickshell/src/crash/handler.cpp:93
#4 <signal handler called>
#5–#8 QIODevice::read (this=0x1, maxSize=46) at qtbase/src/corelib/io/qiodevice.cpp:1003
#9–#14 QCborStreamReader::readAllString() at qtbase/src/corelib/serialization/qcborstreamreader.cpp
#15–#18 iterateInPluginMetaData / QFactoryLoaderMetaDataKeysExtractor
#19 QFactoryLoader::metaDataKeys() at qtbase/src/corelib/plugin/qfactoryloader.cpp:537
#20 QFactoryLoader::keyMap() at qtbase/src/corelib/plugin/qfactoryloader.cpp:596
#23 QImageReader::imageCount() const
#24 readImage(...) at qtdeclarative/.../qquickpixmapcache.cpp:512
#25 QQuickPixmapReader::processJob (...)
localFile = "/usr/share/icons/hicolor/scalable/apps/one.alynx.showmethekey.svg"
#26 QQuickPixmapReader::processJobs
#41 QQuickPixmapReader::run
```
The systemd-coredump contains only this LWP (the pixmap-reader thread). Other in-flight work is not in the dump.
Last Quickshell log line before the crash:
```
DEBUG quickshell.hyprland.ipc.events: Received event: "openlayer>>omarchy-menu"
```
`plugins/menu/Menu.qml` loads those icons with a normal `Image { asynchronous: true; source: appLibrary.iconSource(...) }`.
## What this is / is not
**Proved:** the SIGSEGV is inside Qt 6.11.2 (`QFactoryLoader` / `QCborStreamReader`), hosted by Omarchy's bundled shell, triggered by menu icon decode after hibernate resume.
**Not proved:** whether hibernate left plugin-metadata state corrupt, or the menu's burst of icon loads just hit a latent Qt bug. The dump cannot distinguish those.
Not the same as:
- #7098 — omarchy-menu crash, but QML JIT while typing
- #8026 — same `QQuickPixmapReader` thread, but OpenSSL while loading HTTPS album art
The immediate fault is in Qt; the user-facing trigger is Omarchy's shell/menu. Filing here because this is the Omarchy-shipped Quickshell config (`/usr/share/omarchy/shell`).
## System details
- `omarchy version`: 4.0.2-1
- Kernel: 7.1.9-arch1-2
- Hyprland 0.56.2-1
- quickshell 0.3.1-1
- qt6-base 6.11.2-2, qt6-declarative 6.11.2-1, qt6-svg 6.11.2-1, qt6-imageformats 6.11.2-1
- GPU: AMD Radeon RX 9070 XT (amdgpu, Navi 48), MODE1 reset on this resume
- CPU: AMD Ryzen 9 5900X
- Desktop: Gigabyte X570 AORUS MASTER, Wayland / Hyprland, 3840x2160
`omarchy-debug --no-sudo --print` was run at 2026-09-01 10:56 EEST and wrote `/tmp/omarchy-debug.log` (113 KiB). Relevant excerpt:
```
Hostname: omarchy
Omarchy Package: omarchy 4.0.2-1
Kernel 7.1.9-arch1-2 x86_64
Desktop Hyprland v 0.56.2 Distro Omarchy
Machine: Desktop Gigabyte X570 AORUS MASTER
CPU: AMD Ryzen 9 5900X 12 cores / 24 threads
Graphics: AMD Navi 48 [Radeon RX 9070/9070 XT] driver amdgpu
Display: wayland compositor Hyprland 0.56.2 Monitor DP-3 3840x2160
Memory: 32 GiB
```
Quickshell's own crash report is at `~/.cache/quickshell/crashes/p619ajmkt/` (`report.txt` + `log.qslog.log`). systemd-coredump pid **287958**.
Filed by Grok 4.6 via Grok Build.
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: matches no known issue
The outcome (valid, duplicate, not a bug, …) is not decided yet.