alvr-org / alvr-org/ALVR

libalvr_vulkan_layer.so segfaults any Vulkan app on NVIDIA (crash in libnvidia-eglcore) — no video, "Gimme frames"

Open
#3,386 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
7.9k
Forks
708
Avg merge
3d 23h
Merged PRs (30d)
11

Description

### Description

On NVIDIA driver **610.57.04**, `libalvr_vulkan_layer.so` segfaults **any** Vulkan
application that loads it. Because the layer is the only mechanism ALVR uses to
capture frames on Linux, `vrcompositor` dies on start, no frames are ever captured,
and the client disconnects every 20s with `Fatal decoder error … Gimme frames >:(`.

**This reproduces with no VR hardware, no SteamVR and no client connection:**

```bash
ALVR_SESSION_JSON=~/.config/alvr/session.json \
VK_LAYER_PATH=~/alvr/alvr_streamer_linux/share/vulkan/explicit_layer.d \
VK_LOADER_LAYERS_ENABLE=VK_LAYER_ALVR_capture \
vulkaninfo --summary >/dev/null 2>&1; echo $?
```

| test | exit |
|---|---|
| `vulkaninfo` alone | **0** |
| `vulkaninfo` + ALVR layer **v20.14.1** | **139 (SIGSEGV)** |
| `vulkaninfo` + ALVR layer **v21.0.0-dev13+nightly.2026.06.06** | **139 (SIGSEGV)** |

Unaffected by: `VK_DRIVER_FILES` (NVIDIA-only ICD), `DISPLAY` set/unset,
`ALVR_SESSION_JSON` set/unset, `VK_LOADER_LAYERS_DISABLE`.

The layer *does* initialise (it prints ALVR's `Render Target: 7552 3648 / Refresh Rate: 90`)
before crashing during instance creation.

### Backtrace (gdb)

```
Thread 1 "vulkaninfo" received signal SIGSEGV
#0 0x0000555555ea1bd0 in ?? ()
#1-#11 libnvidia-eglcore.so.610.57.04
#12-#14 libEGL_nvidia.so.0
```

Loader also warns:
```
Layer VK_LAYER_ALVR_capture uses API version 1.0 which is older than the
application specified API version of 1.4. May cause issues.
```
(`alvr_x86_64.json` declares `"api_version": "1.0.68"`.)

### Environment
- ALVR streamer **20.14.1** (also repro'd on v21 nightly)
- Client: alvr-visionos **20.14.1**, Apple Vision Pro (versions match; no protocol errors)
- NVIDIA driver **610.57.04**, CUDA 13.3, RTX 4090
- vulkan-loader **1.4.341**
- Bazzite 44 (Fedora 44 atomic), KDE Plasma **Wayland**
- SteamVR 2.12.14 (build 22542555 — downgraded per SteamVR-for-Linux#923)

### Ruled out
- Version mismatch (client == streamer, no `protocol ID` errors)
- Network (verified bidirectional via `/proc/net/snmp` counters)
- Encoder (`Using NvEnc encoder` succeeds; standalone `ffmpeg -c:v hevc_nvenc` works)
- Codec/profile/bit-depth — the client creates its decoder lazily from the first NAL
(`EventHandler.swift:502`), and no NAL ever arrives, so these cannot be involved.

### Impact
No ALVR version can stream on this driver, since both the stable and nightly layers
crash identically.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.