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

[Bug] Chromium main process SIGTRAPs on VM close (VM teardown triggers gpu_data_manager fatal CHECK)

Reported by drumguy1384 · filed Aug 31, 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

[Bug] Chromium main process SIGTRAPs on VM close (VM teardown triggers gpu_data_manager fatal CHECK)revision 1 · captured 2026-09-28 21:24 UTC via poll

Summary

Closing a libvirt/QEMU VM (win11) causes the main Chromium browser process to die with SIGTRAP (internal CHECK failure) at the exact moment the VM's systemd scope deactivates. All Chromium windows close instantly.

Environment

  • Distro: Arch Linux (Omarchy)
  • Window Manager: Hyprland (via uwsm)
  • Chromium: chromium 151.0.7922.173-1 (Arch package)
  • Mesa: mesa 1:26.2.1-1
  • VM: libvirt/QEMU, Windows 11 guest
  • VM Graphics: virtio-vga-gl + egl-headless with <gl rendernode='/dev/dri/renderD128'/>
  • GPU: AMD Radeon RX 6700 XT (renderD128)

Steps to Reproduce

  1. Start Chromium (multiple windows/tabs)
  2. Start a libvirt VM with virtio-vga-gl + egl-headless + rendernode=/dev/dri/renderD128
  3. Close the VM (shutdown or poweroff)
  4. Observe: All Chromium windows vanish instantly at the exact second machine-qemu-*-win11.scope: Deactivated

Evidence

  • Signal: SIGTRAP (5), si_code=SI_KERNEL — internal CHECK failure
  • Process: Main browser (/usr/lib/chromium/chromium — no --type=)
  • Stack: ChromeMain → glib main loop → gpu_data_manager_impl_private.cc:417
  • Fatal message: "GPU process isn't usable. Goodbye."
  • Timing: Identical to machine-qemu-*-win11.scope: Deactivated (same second)

What Has Been Ruled Out

HypothesisTestResult
CAC hook pkillFixed hook to child-only + dedupeStill crashes before hook's release op runs
Mesa/GPU sharingVM moved to plain virtio-vga (no egl-headless)Still crashes
CAC/OpenSC USBDisabled opensc-pkcs11.so in NSSStill crashes (VM even picked up CAC fine)
GPU process--disable-gpu, then SwiftShader (--use-gl=angle --use-angle=swiftshader)Still crashes
vm.max_map_countAlready at 1,048,576N/A
Clock/timeNo adjtimex/NTP step at crash momentN/A

Key Observations

  1. Crash is main browser process (no --type=), not a renderer/GPU child
  2. SIGTRAP with SI_KERNEL = kernel-delivered fatal CHECK assertion
  3. Occurs at VM scope deactivation — before libvirt hooks run their release phase
  4. Stack trace consistently shows ChromeMain → glib main loop → gpu_data_manager_impl_private.cc
  5. 07:51 SIGILL renderer crash occurred with no VM running — Chromium has baseline instability on this stack

VM Configuration (Relevant Portion)

<graphics type='egl-headless'>
  <gl rendernode='/dev/dri/renderD128'/>
</graphics>
<video>
  <model type='virtio' heads='1' primary='yes' device='virtio-vga-gl'>
    <acceleration accel3d='yes'/>
  </model>
</video>

Workaround Attempted

  • Moving VM to virtio-vga (SPICE only, no egl-headless) did not fix it
  • --disable-gpu and SwiftShader (--use-gl=angle --use-angle=swiftshader --enable-unsafe-swiftshader) did not fix it

Request

This appears to be a fundamental interaction between VM teardown (cgroup/PCI/kernel event at scope deactivation) and Chromium's GpuDataManagerImpl fatal fallback path. The CHECK at gpu_data_manager_impl_private.cc:417 fires when the GPU process is deemed "not usable" — but this happens even with software GL, suggesting the trigger is a kernel/cgroup event during VM scope teardown that Chromium's GPU data manager interprets as GPU loss.

Possible areas to investigate:
1. Chromium's GpuDataManagerImpl handling of GPU process termination during system cgroup changes
2. Hyprland/uwsm session handling of XWayland restarts during VM teardown
3. libvirt's cgroup/PCI teardown sequence affecting GPU process visibility

View raw text
## Summary
Closing a libvirt/QEMU VM (win11) causes the **main Chromium browser process** to die with `SIGTRAP` (internal `CHECK` failure) at the exact moment the VM's systemd scope deactivates. All Chromium windows close instantly.

## Environment
- **Distro**: Arch Linux (Omarchy)
- **Window Manager**: Hyprland (via uwsm)
- **Chromium**: `chromium 151.0.7922.173-1` (Arch package)
- **Mesa**: `mesa 1:26.2.1-1`
- **VM**: libvirt/QEMU, Windows 11 guest
- **VM Graphics**: `virtio-vga-gl` + `egl-headless` with `<gl rendernode='/dev/dri/renderD128'/>`
- **GPU**: AMD Radeon RX 6700 XT (renderD128)

## Steps to Reproduce
1. Start Chromium (multiple windows/tabs)
2. Start a libvirt VM with `virtio-vga-gl` + `egl-headless` + `rendernode=/dev/dri/renderD128`
3. Close the VM (shutdown or poweroff)
4. Observe: **All Chromium windows vanish instantly** at the exact second `machine-qemu-*-win11.scope: Deactivated`

## Evidence
- **Signal**: `SIGTRAP` (5), `si_code=SI_KERNEL` — internal `CHECK` failure
- **Process**: Main browser (`/usr/lib/chromium/chromium` — no `--type=`)
- **Stack**: `ChromeMain` → glib main loop → `gpu_data_manager_impl_private.cc:417`
- **Fatal message**: `"GPU process isn't usable. Goodbye."`
- **Timing**: Identical to `machine-qemu-*-win11.scope: Deactivated` (same second)

## What Has Been Ruled Out
| Hypothesis | Test | Result |
|------------|------|--------|
| CAC hook `pkill` | Fixed hook to child-only + dedupe | Still crashes **before** hook's `release` op runs |
| Mesa/GPU sharing | VM moved to plain `virtio-vga` (no egl-headless) | Still crashes |
| CAC/OpenSC USB | Disabled `opensc-pkcs11.so` in NSS | Still crashes (VM even picked up CAC fine) |
| GPU process | `--disable-gpu`, then SwiftShader (`--use-gl=angle --use-angle=swiftshader`) | Still crashes |
| `vm.max_map_count` | Already at 1,048,576 | N/A |
| Clock/time | No `adjtimex`/NTP step at crash moment | N/A |

## Key Observations
1. Crash is **main browser process** (no `--type=`), not a renderer/GPU child
2. `SIGTRAP` with `SI_KERNEL` = kernel-delivered fatal `CHECK` assertion
3. Occurs at **VM scope deactivation** — before libvirt hooks run their `release` phase
4. Stack trace consistently shows `ChromeMain` → glib main loop → `gpu_data_manager_impl_private.cc`
5. `07:51` SIGILL renderer crash occurred **with no VM running** — Chromium has baseline instability on this stack

## VM Configuration (Relevant Portion)
```xml
<graphics type='egl-headless'>
  <gl rendernode='/dev/dri/renderD128'/>
</graphics>
<video>
  <model type='virtio' heads='1' primary='yes' device='virtio-vga-gl'>
    <acceleration accel3d='yes'/>
  </model>
</video>
```

## Workaround Attempted
- Moving VM to `virtio-vga` (SPICE only, no egl-headless) did **not** fix it
- `--disable-gpu` and SwiftShader (`--use-gl=angle --use-angle=swiftshader --enable-unsafe-swiftshader`) did **not** fix it

## Request
This appears to be a fundamental interaction between VM teardown (cgroup/PCI/kernel event at scope deactivation) and Chromium's `GpuDataManagerImpl` fatal fallback path. The `CHECK` at `gpu_data_manager_impl_private.cc:417` fires when the GPU process is deemed "not usable" — but this happens even with software GL, suggesting the trigger is a kernel/cgroup event during VM scope teardown that Chromium's GPU data manager interprets as GPU loss.

**Possible areas to investigate:**
1. Chromium's `GpuDataManagerImpl` handling of GPU process termination during system cgroup changes
2. Hyprland/uwsm session handling of XWayland restarts during VM teardown
3. libvirt's cgroup/PCI teardown sequence affecting GPU process visibility

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 10:21 UTC