protonscr

[BUG] Opening the dashboard Desktop tab while streaming to Steam Frame segfaults the Steam client (32-bit vrclient.so requests an empty pixel shader name)

steamvropen
ValveSoftware/SteamVR-for-Linux#963 · opened 2026-09-25 by TehGingerDev · updated 2026-10-08 · 8 comments · github
TTehGingerDev 2026-09-25 github

Describe the bug
While streaming to a Steam Frame from a Linux desktop host, opening the Desktop tab in the SteamVR dashboard crashes the Steam client (SIGSEGV), which takes vrcompositor and vrmonitor down with it and ends the VR session. Reproduced 3 times in one evening on 2.17.10; each time Steam auto-restarted and re-initialised the wireless adapter, so the headset also lost its link for ~15 s.

The crash is in the Steam client's 32-bit SteamVR client library. Its log shows the desktop capture succeeding (PipeWire portal, Desktop PipeWire NV12 + NVENC H264), then:

vrclient_steam.txt (arch=linux32, app key steam.client):
Enable advanced image processing of scene textures.
Initializing CVulkanVRRenderer
Failed to load pixel shader ! (size=2147483647)

The format string in bin/vrclient.so is Failed to load pixel shader %s! (size=%d) — the shader name is empty, so no file is ever looked up (all resources/shaders/vulkan/*.spv files are present and the 64-bit bin/linux64/vrclient.so loads them fine for games). The missing shader is then handed to the NVIDIA driver:

kernel: steam[111344]: segfault at 4000480 ip 00000000eedafe7f ... in libnvidia-glcore.so.610.57.04
coredumpctl (thread 111344):
 #0 libnvidia-glcore.so.610.57.04 + 0xf09e7f
 #1 vrclient.so + 0x49e905   (SteamVR/bin/vrclient.so, 32-bit)
 #2 vrclient.so + 0x49ec3c
 #3 vrclient.so + 0x289b2c
 #4 vrclient.so + 0x28ea45
 #5 vrclient.so + 0x2e98d5
 #6 vrclient.so + 0x2e99bd
 #7 steamui.so + 0x1b1c47e
 #8 steamui.so + 0x1b1c5ca
 #9 SteamThreadTools::CThread::ThreadExceptionWrapper (libtier0_s.so)

Followed within seconds by:

vrserver.txt: Process <steam pid>: steam disconnected ... Lost master process ... Quitting all immediately.
kernel: vrcompositor[...]: segfault at <addr> ip <same addr> error 15   (jump to invalid address during teardown)
coredumpctl: vrmonitor SIGABRT

Crash reports were uploaded by Steam's crash handler (e.g. CrashID=bp-a13f62a9-58d9-4c66-a8ca-47cd82260923, bp-4aecdfc6-d070-495a-8966-d52f32260923).

To Reproduce

  1. Linux desktop host, Steam started with -pipewire (and -vrlinkforceenable so the Frame can attach). SteamVR running with the Frame connected via vrlink, a VR game running or not.
  2. In the headset, open the SteamVR dashboard and select the Desktop tab.
  3. Steam segfaults within ~1 s of the desktop capture starting; SteamVR session ends.

Expected behavior
The desktop view is shown in the headset, or is unavailable without crashing the Steam client.

System Information

  • Steam client version: 1790121765 (publicbeta)
  • SteamVR version: 2.17.10 stable (build 1789498647) when reproduced; 2.18.1 beta (build 25466322) ships the same 32-bit bin/vrclient.so format string
  • Distribution: Arch Linux, kernel 7.2.2-arch1-1, KDE Plasma 6.7.4 (Wayland session; Steam under XWayland), xdg-desktop-portal-kde
  • GPU: NVIDIA RTX 3090, nvidia-open 610.57.04, lib32-nvidia-utils 610.57.04
  • Headset: Steam Frame (Deckard MP) via Steam Frame Wireless Adapter (rtw89_8852cu)
  • Minidumps and an anonymized log bundle: available on request.

Additional context

  • Setting "dashboard": { "useNewDesktop": false } in steamvr.vrsettings avoids the crash: the Desktop tab then simply shows nothing (no capture is attempted; nothing logged by vrdashboard/vrwebhelper), confirmed on 2.18.1 beta on 2026-09-24. So on Linux the current choice is an empty Desktop tab or a Steam segfault.
  • The same 32-bit library also cannot run the vrlink watchdog (no linux32 build of driver_vrlink), reported separately.
TTehGingerDev 2026-09-25 github

Related: #962 (SteamVR never auto-started for a Frame VR stream on Linux desktop hosts). Same host, same log bundle.

SsuperRFstrat 2026-09-28 github

I'm having a similar issue. I can't tell if it's exactly the same. I finally at least got it to ask which monitor to send after seeing somewhere that the -pipewire flag needs to be present if you're doing wayland things. Then I'm also having issues with SteamVR crashing due to QT_QPA_PLATFORM being set to "wayland;xcb" instead of "xcb". Now, I can finally get the link to work. But I can't actually play games that are on the PC and stream them to my new Frame. Very frustrating, but I get it. I'm very happy to help however I can, given the investment I've made to get here. Looking forward to Assetto Corsa, but HL:A will tide me over until it's (hopefully) fixed.

TTehGingerDev 2026-09-28 github

@superRFstrat Your symptoms sound more like #962 than this issue. On a non-SteamOS Linux desktop, Steam never starts SteamVR when a VR game is launched from the Frame, so the game falls back to a flat window and Steam times out waiting for the VR connection (CRemoteClientJobStartStream timed out k_ERemoteClientWaitVRConnectionReady in remote_connections.txt). This workaround works reliably for me:

  1. Start Steam with -vrlinkforceenable (alongside -pipewire, which you already found).
  2. Start SteamVR on the PC first, and wait for the Frame to connect to it.
  3. Launch the game from the headset.

Your QT_QPA_PLATFORM=xcb finding is one I had not come across. What GPU are you on? The crash half of this issue turned out to be NVIDIA-specific; see below.


Retest on AMD. I replaced the display GPU in this host with an RX 9070 XT (Mesa 26.2.2 / RADV) and re-ran the Desktop tab test on SteamVR 2.17.10 with "useNewDesktop": true, after a clean Steam restart.

  • The empty shader name is still there, independent of GPU. The Steam client's 32-bit vrclient.so logs exactly what it did on NVIDIA:
    Enable advanced image processing of scene textures.
    Initializing CVulkanVRRenderer
    Failed to load pixel shader ! (size=2147483647)
    Error initializing CVulkanVRRenderer
    
  • The crash is NVIDIA-specific. On AMD the failed renderer init doesn't crash the Steam client. The Desktop tab simply shows nothing. On NVIDIA, the same missing shader was handed to libnvidia-glcore and segfaulted the client.
  • Desktop capture: the PipeWire screencast starts, then errors on its own within a few seconds: CDesktopCapturePipeWire: PipeWire stream state error: invalid message id:2 op:3 (Invalid argument).
  • Still reproduces on AMD: steamwebhelper SIGABRT right after a Proton VR title exits (seen again after quitting VTOL VR). After that, the Steam dashboard panels (valve.steam.gamepadui.*) are not re-created in SteamVR until the Steam client itself is restarted, not just SteamVR.
SsuperRFstrat 2026-09-28 github

@TehGingerDev I use NixOS, so I'm working through those channels first since SteamVR apparently works on other distros. I don't know of a way to actually run SteamVR independently of Steam since libs of any kind are a huge pain in the neck. I did try manually starting the launcher scripts, but the shabang lines aren't written for Nix. I could totally edit them to see where else I get held up. I'm just doing my best to actually read into it to see if there's a proper fix. I usually give any NixOS issues a few hours of just reading and googling since the userbase is so small. I did find the relevant issues on the nixpkgs repo and I am working on collecting everything I can in order to provide something of meaning to the maintainers.

SsuperRFstrat 2026-09-28 github

@TehGingerDev PC Specs (Sorry read only a bit):

  • AMD Ryzen 7 5800X
  • 32GB DDR4
  • AMD RX 6800 XT
  • NixOS 26.05 (with latest kernel 7.2.6 to get Steam Frame to connect)
  • COSMIC DE
TTehGingerDev 2026-09-29 github

@superRFstrat No need to run SteamVR outside Steam or touch the launcher scripts. "Start SteamVR first" just means launching SteamVR from your Steam library, the same way you'd launch a game, before you launch the VR game from the headset. From a terminal it's the same as:

steam steam://rungameid/250820

The full sequence that works for me:

  1. Quit Steam completely, then start it with both flags, for example steam -pipewire -vrlinkforceenable. On NixOS you can put that in whatever wrapper or desktop entry you launch Steam from. Check the flags actually took effect: ps -o args= -C steam should show them, and bootstrap_log.txt logs the launch arguments.
  2. Launch SteamVR from the Steam library on the PC and wait until the Frame connects to it and shows the SteamVR home.
  3. Launch the game from the headset.

If step 3 still gives you the loading panel and nothing else, ~/.local/share/Steam/logs/remote_connections.txt will show CRemoteClientJobStartStream timed out k_ERemoteClientWaitVRConnectionReady if it's the auto-start problem, and vrserver.txt will show whether SteamVR was running at the time.

On an RX 6800 XT, the NVIDIA-specific crash in this issue shouldn't affect you.

TTehGingerDev 2026-09-29 github

@superRFstrat Checked whether the NixOS-specific SteamVR setup step matters here. On NixOS the bubblewrap Steam usually can't grant cap_sys_nice to vrcompositor-launcher, so you'll likely see "SteamVR setup is incomplete, some features might be missing" at startup. I tested that exact state on my host, with the capability removed and the prompt declined, and the Frame still streamed normally. So that dialog is safe to dismiss. It only costs the compositor's thread-priority boost, which the NixOS wiki's VR page covers if you want it later.

The main thing is still launching SteamVR from Steam before launching the game from the headset, with -vrlinkforceenable on Steam. One more gotcha I just hit: the Frame won't connect to the PC for streaming while it's plugged into a wall outlet, so unplug it first.

Ssagelyone 2026-10-08 github

I am experiencing the same issue, would appreciate a fix soon!

Nothing extracted yet.