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 GTK file chooser / gvfs when a plugin FileDialog opens
Reported by PanicIsReal · filed Aug 28, 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?
- 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
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
- Enable a local plugin whose panel contains
QtQuick.Dialogs.FileDialog(here the title was "Send photo"). - Open the picker.
- Hyprland reports a new
quickshellwindow 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::execPID 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::execWhat 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-gtkSIGSEGV in MIME lookup, a different process. - #8647 is the lockscreen
FATAL: Tried to show lockscreen surfaces without active lockSIGABRT. 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