libalvr_vulkan_layer.so segfaults any Vulkan app on NVIDIA (crash in libnvidia-eglcore) — no video, "Gimme frames"
- 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
Assessment
This issue has not been assessed yet.