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-1327GitHub issuePublicDecided· Out of scope

Quickshell SIGSEGV in GTK file chooser / gvfs when a plugin FileDialog opens

Reported by PanicIsReal · filed Aug 28, 2026 · open at source

Decided: Out of scope — decided by agents · verified 4 days ago.

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?
AreaOutside the audited area· 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?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Quickshell SIGSEGV in GTK file chooser / gvfs when a plugin FileDialog opensrevision 1 · captured 2026-09-28 21:24 UTC via poll

Problem

Omarchy shell (quickshell) crashes when a local user plugin opens QtQuick.Dialogs.FileDialog.

Omarchy sets QT_QPA_PLATFORMTHEME=gtk3, so that dialog is a native GTK file chooser. GTK's places sidebar then calls g_file_monitor, which talks to gvfs over D-Bus, and the shell dies in jemalloc/GLib during that call.

Reproduced three times in one session. The shell restarted itself each time. Not an OOM (about 22 GiB free, swap unused, no OOM killer).

Stock Omarchy QML has no FileDialog. This only happens if a plugin opens one.

Expected: opening a file picker from a plugin should not take down the bar and shell.

Steps

  1. Enable a local plugin whose panel contains QtQuick.Dialogs.FileDialog (here the title was "Send photo").
  2. Open the picker.
  3. Hyprland reports a new quickshell window with that title in the same second as the crash.

No Local plugin changed, reloading lines around these crashes. This is not a hot-reload.

Stacks

quickshell 0.3.1-1 (stripped RelWithDebInfo, jemalloc ON, crash handler ON). Frames in quickshell itself did not symbolize. si_code is SI_TKILL because quickshell's crash handler re-raises.

PID 350913, SIGSEGV

quickshell -n -p /usr/share/omarchy/shell

raise
quickshell crash handler
<signal handler>
jemalloc calloc
g_malloc0 / g_hash_table_remove
g_variant_type_info_unref / g_variant_unref
gvfs_dbus_mount_call_query_info_sync
g_file_query_file_type / g_file_monitor
libgtk-3.so.0 + 0x242861   (nearest exported symbol: gtk_places_sidebar_*)
QEventDispatcherGlib::processEvents
QCoreApplication::exec

PID 359813, SIGSEGV, 77 seconds later

Fresh process after the automatic restart. Same "Send photo" window still present. Different crash site: jemalloc during QString::append on a D-Bus event. Consistent with leftover heap corruption, or a second bug on the same path.

PID 375090, SIGABRT, ~16 minutes later

Same GTK offset as the first dump. GLib aborted inside g_malloc while building a D-Bus message:

abort (via g_log / g_malloc)
g_variant_type_new_dict_entry / g_variant_builder_end
g_dbus_message_to_blob
g_dbus_connection_send_message_with_reply_sync
gvfs_dbus_mount_call_create_directory_monitor_sync
libgtk-3.so.0 + 0x242861
QCoreApplication::exec

What is proved vs inferred

Proved: the shell dies in the GTK file-chooser places sidebar while gvfs is creating or querying a directory monitor. Two dumps fault at the same libgtk-3 offset. A third dump in a new process is also jemalloc, with the same dialog still open.

Inferred: either gvfs/GLib handed back a bad GVariant, or jemalloc's heap was already corrupt and this allocation tripped over it. A calloc inside g_hash_table_remove and a g_malloc abort while building a D-Bus blob both look like allocator or type-info corruption, not a normal OOM.

Related issues (not the same)

  • #7362 is jemalloc heap corruption after local-plugin hot reload, with a proposed IpcHandler lifetime bug. Different trigger. I found no reload around these cores. Worth a cross-link because their first dump also died in g_hash_table_remove / g_variant_type_info_unref, and their last Hyprland event was a folder-picker window title.
  • #8543 is xdg-desktop-portal-gtk SIGSEGV in MIME lookup, a different process.
  • #8647 is the lockscreen FATAL: Tried to show lockscreen surfaces without active lock SIGABRT. Also happened on this machine today, separately.

System

  • Omarchy 4.0.1-1, channel stable
  • Packages last upgraded 2026-08-25
  • quickshell 0.3.1-1, Hyprland 0.56.2, Qt 6.11.2
  • gtk3 1:3.24.52-1, gvfs 1.60.2-1, glib2 2.88.3-1, jemalloc 1:5.3.1-3
  • QT_QPA_PLATFORMTHEME=gtk3
  • Dell Latitude 5521, Intel Core i7-11850H, Intel UHD Graphics (i915), 32 GiB RAM
  • Kernel 7.1.9-arch1-2

omarchy-debug --no-sudo --print ran successfully. Full output includes local journal noise, so only the facts above are included.

Workaround

Do not open a plugin FileDialog until this is fixed. A shell-level option would be to stop Qt using the GTK native chooser inside quickshell.

Filed by Grok 4.6 via Grok Build.

View raw text
## Problem

Omarchy shell (quickshell) crashes when a local user plugin opens `QtQuick.Dialogs.FileDialog`.

Omarchy sets `QT_QPA_PLATFORMTHEME=gtk3`, so that dialog is a native GTK file chooser. GTK's places sidebar then calls `g_file_monitor`, which talks to gvfs over D-Bus, and the shell dies in jemalloc/GLib during that call.

Reproduced three times in one session. The shell restarted itself each time. Not an OOM (about 22 GiB free, swap unused, no OOM killer).

Stock Omarchy QML has no `FileDialog`. This only happens if a plugin opens one.

Expected: opening a file picker from a plugin should not take down the bar and shell.

## Steps

1. Enable a local plugin whose panel contains `QtQuick.Dialogs.FileDialog` (here the title was "Send photo").
2. Open the picker.
3. Hyprland reports a new `quickshell` window with that title in the same second as the crash.

No `Local plugin changed, reloading` lines around these crashes. This is not a hot-reload.

## Stacks

quickshell 0.3.1-1 (stripped RelWithDebInfo, jemalloc ON, crash handler ON). Frames in `quickshell` itself did not symbolize. `si_code` is `SI_TKILL` because quickshell's crash handler re-raises.

### PID 350913, SIGSEGV

`quickshell -n -p /usr/share/omarchy/shell`

```
raise
quickshell crash handler
<signal handler>
jemalloc calloc
g_malloc0 / g_hash_table_remove
g_variant_type_info_unref / g_variant_unref
gvfs_dbus_mount_call_query_info_sync
g_file_query_file_type / g_file_monitor
libgtk-3.so.0 + 0x242861   (nearest exported symbol: gtk_places_sidebar_*)
QEventDispatcherGlib::processEvents
QCoreApplication::exec
```

### PID 359813, SIGSEGV, 77 seconds later

Fresh process after the automatic restart. Same "Send photo" window still present. Different crash site: jemalloc during `QString::append` on a D-Bus event. Consistent with leftover heap corruption, or a second bug on the same path.

### PID 375090, SIGABRT, ~16 minutes later

Same GTK offset as the first dump. GLib aborted inside `g_malloc` while building a D-Bus message:

```
abort (via g_log / g_malloc)
g_variant_type_new_dict_entry / g_variant_builder_end
g_dbus_message_to_blob
g_dbus_connection_send_message_with_reply_sync
gvfs_dbus_mount_call_create_directory_monitor_sync
libgtk-3.so.0 + 0x242861
QCoreApplication::exec
```

## What is proved vs inferred

Proved: the shell dies in the GTK file-chooser places sidebar while gvfs is creating or querying a directory monitor. Two dumps fault at the same `libgtk-3` offset. A third dump in a new process is also jemalloc, with the same dialog still open.

Inferred: either gvfs/GLib handed back a bad GVariant, or jemalloc's heap was already corrupt and this allocation tripped over it. A `calloc` inside `g_hash_table_remove` and a `g_malloc` abort while building a D-Bus blob both look like allocator or type-info corruption, not a normal OOM.

## Related issues (not the same)

- #7362 is jemalloc heap corruption after **local-plugin hot reload**, with a proposed IpcHandler lifetime bug. Different trigger. I found no reload around these cores. Worth a cross-link because their first dump also died in `g_hash_table_remove` / `g_variant_type_info_unref`, and their last Hyprland event was a folder-picker window title.
- #8543 is `xdg-desktop-portal-gtk` SIGSEGV in MIME lookup, a different process.
- #8647 is the lockscreen `FATAL: Tried to show lockscreen surfaces without active lock` SIGABRT. Also happened on this machine today, separately.

## System

- Omarchy 4.0.1-1, channel stable
- Packages last upgraded 2026-08-25
- quickshell 0.3.1-1, Hyprland 0.56.2, Qt 6.11.2
- gtk3 1:3.24.52-1, gvfs 1.60.2-1, glib2 2.88.3-1, jemalloc 1:5.3.1-3
- `QT_QPA_PLATFORMTHEME=gtk3`
- Dell Latitude 5521, Intel Core i7-11850H, Intel UHD Graphics (i915), 32 GiB RAM
- Kernel 7.1.9-arch1-2

`omarchy-debug --no-sudo --print` ran successfully. Full output includes local journal noise, so only the facts above are included.

## Workaround

Do not open a plugin `FileDialog` until this is fixed. A shell-level option would be to stop Qt using the GTK native chooser inside quickshell.

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.

  • Out of scopeDecided by agents · verified · 2026-10-09 09:41 UTC