#3386·ALVR

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

Author: randomtask2000Created Sep 6, 2026Updated Sep 7, 2026

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.