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

Browser crash, probably from video autoplay, freezes Hyprland

Reported by hoclun-rigsep · filed Jun 2, 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

Browser crash, probably from video autoplay, freezes Hyprlandrevision 1 · captured 2026-09-28 21:29 UTC via poll

Chromium/Brave SIGILL on video playback (NVIDIA) crashes Hyprland — hard reboot required

System

OSArch Linux
Kernel7.0.9-arch2-1
CPUAMD Ryzen 9 5900X
GPUNVIDIA GeForce RTX 5070
NVIDIA drivernvidia-open-dkms 595.71.05-2
libva-nvidia-driver0.0.17-1
Chromium148.0.7778.178-1
Brave1.92.108 beta
Hyprland0.55.2-1
Omarchy(current as of 2026-05-30 upgrade)

What happened

Playing video on social/commerce sites (confirmed: Facebook, Twitter, Amazon)
often causes Chromium or Brave to crash and Hyprland to freeze unrecoverably. I'm still
able to shell into the system but as for the physical console I can't even switch
to a different VT.

Investigation

I shelled in to the system and asked Claude to attempt recovery and
investigate the cause. I rejected some implausible conclusions and now
present one which seems plausible to me (fwiw!).

The browser crashes with SIGILL in its internal Media decoder
thread. The crash leaves an NVDEC hardware decode session open without freeing
it. The NVIDIA GSP firmware then times out waiting for a cleanup RPC, enters
a faulted state, and Hyprland loses its GPU context and aborts. Hyprland's
watchdog restarts it in safe mode, but safe mode fails to bind its socket.
With Wayland mediating VT switching, there is no escape to a TTY.

This happened twice in one day: once with stock Chromium (Facebook),
once with Brave beta (Amazon), each time requiring a reboot.
I've already tried the "ignore the problem; maybe it will go away" solution
but am now filing this issue—it's hard to see how it could be affecting
only me.

Relationship to existing issues

This is distinct from #2964 (AMD GPU ring timeout during Google Meet) and
#3891 (ANGLE/EGL video rendering broken after Mesa update). Those are GPU
rendering pipeline failures on AMD hardware. This is a crash in Chromium's
software-side media decode thread on NVIDIA hardware, which then wedges the
GPU driver.

The surface symptom — Chromium takes down Hyprland, reboot required — is the
same, but the root cause and affected hardware are different.

Workaround (unconfirmed)

Add --disable-features=VaapiVideoDecoder to
~/.config/chromium-flags.conf. This disables only hardware video
decode (NVDEC via VA-API); GPU rasterization, compositing, WebGL, and
canvas acceleration are unaffected.

Further unconfirmed analysis from Claude

This is Claude writing now:

Hyprland

When Hyprland crashes (SIGABRT, triggered by GPU context loss after an NVIDIA
driver fault), its watchdog restarts it in safe mode. The safe mode instance
fails to bind its socket, producing a non-functional compositor. Because VT
switching on Wayland is compositor-mediated rather than kernel-handled, the
user has no means of escaping to a TTY. The only recovery is a hard power-off.

There are two bugs here:
1. Safe mode instance fails to bind its socket
2. A broken compositor fully blocks VT switching with no kernel-level escape hatch

Chromium

Chromium's Media thread terminates with SIGILL (illegal instruction) when playing
video on high-media sites (confirmed: Facebook, Amazon; also reproduced with Brave
1.92.108 beta on Twitter). The crash is deterministic — the same code address is hit
on every occurrence. The process dies without releasing its NVDEC/VA-API resources,
which cascades into an NVIDIA GSP firmware timeout (Xid 175) that degrades the GPU
driver state, takes down the Hyprland compositor, and leaves the system in an
unrecoverable state requiring a hard reboot.

Crash detail

Kernel trap message (boot of 2026-05-30, Chromium 148.0.7778.96-1)
07:27:14  kernel: traps: Media[320806] trap invalid opcode
          ip:55a64c04e477 sp:7f39907fbf50 error:0
          in chromium[8d62477,55a644848000+10240000]
07:27:14  systemd-coredump: Process 320640 (chromium) of user 1000
          terminated abnormally with signal 4/ILL

The crashing process is a --type=renderer subprocess. The thread named "Media"
is Chromium's in-process media decoder thread. The crash address is identical across
multiple occurrences (different sessions, different browser versions), pointing to a
deterministic code path rather than memory corruption.

The same pattern reproduces with Brave 1.92.108 beta (same upstream Chromium media
pipeline):

15:37:55  traps: Media[38436] trap invalid opcode ip:5561296141e8 in brave[...]
15:41:59  traps: Media[41157] trap invalid opcode ip:5561296141e8  ← same address
15:42:28  traps: Media[41963] trap invalid opcode ip:5561296141e8  ← same address
Coredump summary
Signal:   4 (ILL)
Process:  chromium --type=renderer [...]
Thread:   "Media" (worker thread, not main)
Storage:  truncated core (symbols stripped in release build)
Stack:    #0  0x000055a64c04e477 n/a (n/a + 0x0)

The binary contains a large number of ud2 sequences (478,277 in the current
build), consistent with CHECK()/IMMEDIATE_CRASH() usage throughout the codebase.
The most likely explanation is an assertion failure in the media decode pipeline —
possibly in the VA-API/NVDEC interaction path — rather than a CPU ISA incompatibility.

Cascade

After the renderer process dies with SIGILL, the NVIDIA GSP firmware times out
waiting for a FREE RPC that will never arrive (the client is dead):

07:28:43  kernel: NVRM: Xid (PCI:0000:0b:00): 175, pid=69435, name=chromium,
          Timeout after 75s of waiting for RPC response from GPU0 GSP!
          Expected function 10 (FREE) sequence 230682 (0xbeef0403 0x0).
07:28:46  kernel: NVRM: GPU0 _kgspLogGspTraceCrashBuffer: [dump follows]

This leaves the NVIDIA driver in a degraded state. When a subsequent Chromium/Brave
crash occurs (or as a delayed consequence), Hyprland loses its GPU context and
aborts:

15:47:30  Hyprland (PID 1852): SIGABRT
15:47:30  xdg-desktop-portal-hyprland (PID 2185): SIGSEGV

Hyprland's watchdog restarts it in safe mode, but safe mode fails to bind its
socket. Under Wayland, VT switching is compositor-mediated; with a non-functional
compositor, keyboard VT switching is completely unavailable. Hard reboot required.

View raw text
# Chromium/Brave SIGILL on video playback (NVIDIA) crashes Hyprland — hard reboot required

## System

| | |
|---|---|
| OS | Arch Linux |
| Kernel | 7.0.9-arch2-1 |
| CPU | AMD Ryzen 9 5900X |
| GPU | NVIDIA GeForce RTX 5070 |
| NVIDIA driver | nvidia-open-dkms 595.71.05-2 |
| libva-nvidia-driver | 0.0.17-1 |
| Chromium | 148.0.7778.178-1 |
| Brave | 1.92.108 beta |
| Hyprland | 0.55.2-1 |
| Omarchy | (current as of 2026-05-30 upgrade) |


## What happened

Playing video on social/commerce sites (confirmed: Facebook, Twitter, Amazon)
often causes Chromium or Brave to crash and Hyprland to freeze unrecoverably. I'm still
able to shell into the system but as for the physical console I can't even switch
to a different VT.

## Investigation

I shelled in to the system and asked Claude to attempt recovery and
investigate the cause. I rejected some implausible conclusions and now
present one which seems plausible to me (fwiw!).

The browser crashes with SIGILL in its internal Media decoder
thread. The crash leaves an NVDEC hardware decode session open without freeing
it. The NVIDIA GSP firmware then times out waiting for a cleanup RPC, enters
a faulted state, and Hyprland loses its GPU context and aborts. Hyprland's
watchdog restarts it in safe mode, but safe mode fails to bind its socket.
With Wayland mediating VT switching, there is no escape to a TTY.

This happened twice in one day: once with stock Chromium (Facebook),
once with Brave beta (Amazon), each time requiring a reboot.
I've already tried the "ignore the problem; maybe it will go away" solution
but am now filing this issue—it's hard to see how it could be affecting
only me.

## Relationship to existing issues

This is distinct from #2964 (AMD GPU ring timeout during Google Meet) and
#3891 (ANGLE/EGL video rendering broken after Mesa update). Those are GPU
rendering pipeline failures on AMD hardware. This is a crash in Chromium's
software-side media decode thread on NVIDIA hardware, which then wedges the
GPU driver.

The surface symptom — Chromium takes down Hyprland, reboot required — is the
same, but the root cause and affected hardware are different.

## Workaround (unconfirmed)

Add `--disable-features=VaapiVideoDecoder` to
`~/.config/chromium-flags.conf`. This disables only hardware video
decode (NVDEC via VA-API); GPU rasterization, compositing, WebGL, and
canvas acceleration are unaffected.

## Further unconfirmed analysis from Claude

This is Claude writing now:

### Hyprland

When Hyprland crashes (SIGABRT, triggered by GPU context loss after an NVIDIA
driver fault), its watchdog restarts it in safe mode. The safe mode instance
fails to bind its socket, producing a non-functional compositor. Because VT
switching on Wayland is compositor-mediated rather than kernel-handled, the
user has no means of escaping to a TTY. The only recovery is a hard power-off.

There are two bugs here:
1. Safe mode instance fails to bind its socket
2. A broken compositor fully blocks VT switching with no kernel-level escape hatch

### Chromium

Chromium's Media thread terminates with SIGILL (illegal instruction) when playing
video on high-media sites (confirmed: Facebook, Amazon; also reproduced with Brave
1.92.108 beta on Twitter). The crash is deterministic — the same code address is hit
on every occurrence. The process dies without releasing its NVDEC/VA-API resources,
which cascades into an NVIDIA GSP firmware timeout (Xid 175) that degrades the GPU
driver state, takes down the Hyprland compositor, and leaves the system in an
unrecoverable state requiring a hard reboot.

#### Crash detail

##### Kernel trap message (boot of 2026-05-30, Chromium 148.0.7778.96-1)

```
07:27:14  kernel: traps: Media[320806] trap invalid opcode
          ip:55a64c04e477 sp:7f39907fbf50 error:0
          in chromium[8d62477,55a644848000+10240000]
07:27:14  systemd-coredump: Process 320640 (chromium) of user 1000
          terminated abnormally with signal 4/ILL
```

The crashing process is a `--type=renderer` subprocess. The thread named "Media"
is Chromium's in-process media decoder thread. The crash address is identical across
multiple occurrences (different sessions, different browser versions), pointing to a
deterministic code path rather than memory corruption.

The same pattern reproduces with Brave 1.92.108 beta (same upstream Chromium media
pipeline):

```
15:37:55  traps: Media[38436] trap invalid opcode ip:5561296141e8 in brave[...]
15:41:59  traps: Media[41157] trap invalid opcode ip:5561296141e8  ← same address
15:42:28  traps: Media[41963] trap invalid opcode ip:5561296141e8  ← same address
```

##### Coredump summary

```
Signal:   4 (ILL)
Process:  chromium --type=renderer [...]
Thread:   "Media" (worker thread, not main)
Storage:  truncated core (symbols stripped in release build)
Stack:    #0  0x000055a64c04e477 n/a (n/a + 0x0)
```

The binary contains a large number of `ud2` sequences (478,277 in the current
build), consistent with `CHECK()`/`IMMEDIATE_CRASH()` usage throughout the codebase.
The most likely explanation is an assertion failure in the media decode pipeline —
possibly in the VA-API/NVDEC interaction path — rather than a CPU ISA incompatibility.


#### Cascade

After the renderer process dies with SIGILL, the NVIDIA GSP firmware times out
waiting for a `FREE` RPC that will never arrive (the client is dead):

```
07:28:43  kernel: NVRM: Xid (PCI:0000:0b:00): 175, pid=69435, name=chromium,
          Timeout after 75s of waiting for RPC response from GPU0 GSP!
          Expected function 10 (FREE) sequence 230682 (0xbeef0403 0x0).
07:28:46  kernel: NVRM: GPU0 _kgspLogGspTraceCrashBuffer: [dump follows]
```

This leaves the NVIDIA driver in a degraded state. When a subsequent Chromium/Brave
crash occurs (or as a delayed consequence), Hyprland loses its GPU context and
aborts:

```
15:47:30  Hyprland (PID 1852): SIGABRT
15:47:30  xdg-desktop-portal-hyprland (PID 2185): SIGSEGV
```

Hyprland's watchdog restarts it in safe mode, but safe mode fails to bind its
socket. Under Wayland, VT switching is compositor-mediated; with a non-functional
compositor, keyboard VT switching is completely unavailable. Hard reboot required.

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 03:52 UTC