protonscr

[BUG] SteamVR does not close VRserver on exit

steamvrclosed bugFixed in Main
ValveSoftware/SteamVR-for-Linux#876 · opened 2026-04-05 by bobsdacool · updated 2026-06-08 · 14 comments · github
Bbobsdacool 2026-04-05 github

Describe the bug
SteamVR launches the vrserver process on steam vr launch.

However, after exiting vr (and even when completely ending steam processe) vrserver remains active, consuming ~150Mib of ram, and prevents steamvr from being launched again.

To Reproduce
Steps to reproduce the behavior:

  1. Launch steam
  2. Use steamlink to connect oculus quest 3 (press ok when prompt indicates issue with install)
  3. launch steamvr and connect
  4. exit steamvr
  5. attempt to launch steamvr
  6. steamvr will launch again; however it will return an error 300.
  7. To fix, open process manager and kill the vrserver processes
  8. launch steamvr again; steamvr now launches again as normal.

Expected behavior
Steamvr should simply kill the vrserver process when steamvr is exited.

System Information (please complete the following information):
Please use the latest Steam beta client and SteamVR beta for your bug reports!

apt list --installed | grep steam: steam/stable,now 1:1.0.0.83~ds-3 i386 [installed];
Steam Beta Branch: Steam Beta Update
Steam Version: 1775175108
Steam Client Build Date: Fri, Apr 3, 2026 12:25 AM UTC -00:00
Steam Web Build Date: Fri, Apr 3, 2026 12:16 AM UTC -00:00

Debian 13; trixie

steam_runtime.txt

  • Steam and SteamVR logs: [generate by running this command in a terminal

steam-logs.tar.gz

Screenshots
If applicable, add screenshots to help explain your problem.

Additional context
Add any other context about the problem here.

IImSapphire 2026-04-10 github

vrlink seems to deadlock when destroying its PipeWire audio nodes.

Thread 2 (Thread 0x7f2c28dff6c0 (LWP 18718) "vrlink-pw"):
#0  futex_wait (futex_word=0x7f2c90ad7708 <_rtld_global+1800>, expected=2, private=0) at ../sysdeps/nptl/futex-internal.h:126
#1  __GI___lll_lock_wait (futex=futex@entry=0x7f2c90ad7708 <_rtld_global+1800>, private=0) at lowlevellock.c:49
#2  0x00007f2c90502139 in lll_mutex_lock_optimized (mutex=0x7f2c90ad7708 <_rtld_global+1800>) at pthread_mutex_lock.c:48
#3  ___pthread_mutex_lock (mutex=0x7f2c90ad7708 <_rtld_global+1800>) at pthread_mutex_lock.c:108
#4  0x00007f2c90aa254d in _dl_close (_map=0x7f2c3c024280) at dl-close.c:763
#5  0x00007f2c90aa1456 in __GI__dl_catch_exception (exception=exception@entry=0x7f2c28dfeae0, operate=<optimized out>, args=<optimized out>) at dl-catch.c:241
#6  0x00007f2c90aa15a9 in _dl_catch_error (objname=0x7f2c28dfeb48, errstring=0x7f2c28dfeb50, mallocedp=0x7f2c28dfeb47, operate=<optimized out>, args=<optimized out>) at dl-catch.c:260
#7  0x00007f2c904faa03 in _dlerror_run (operate=<optimized out>, args=<optimized out>) at dlerror.c:138
#8  0x00007f2c904fa743 in __dlclose (handle=<optimized out>) at dlclose.c:31
#9  0x00007f2c907fb279 in ?? () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
[#10](/issue/ValveSoftware/SteamVR-for-Linux/10) 0x00007f2c907fb495 in ?? () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
[#11](/issue/ValveSoftware/SteamVR-for-Linux/11) 0x00007f2c907fbf3b in pw_unload_spa_handle () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
[#12](/issue/ValveSoftware/SteamVR-for-Linux/12) 0x00007f2c90805c79 in pw_impl_port_set_mix () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
[#13](/issue/ValveSoftware/SteamVR-for-Linux/13) 0x00007f2c908064a7 in ?? () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
[#14](/issue/ValveSoftware/SteamVR-for-Linux/14) 0x00007f2c907f7d0d in pw_impl_node_destroy () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
[#15](/issue/ValveSoftware/SteamVR-for-Linux/15) 0x00007f2c9081e3e3 in pw_stream_disconnect () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
[#16](/issue/ValveSoftware/SteamVR-for-Linux/16) 0x00007f2c9081e830 in pw_stream_destroy () from target:/lib/x86_64-linux-gnu/libpipewire-0.3.so.0
[#17](/issue/ValveSoftware/SteamVR-for-Linux/17) 0x00007f2c848bbb6f in SVLAudioPipewire::Cleanup() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
[#18](/issue/ValveSoftware/SteamVR-for-Linux/18) 0x00007f2c848bbf09 in SVLAudioPipewire::ProcessThread() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
[#19](/issue/ValveSoftware/SteamVR-for-Linux/19) 0x00007f2c84a94300 in execute_native_thread_routine () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
[#20](/issue/ValveSoftware/SteamVR-for-Linux/20) 0x00007f2c904fe97a in start_thread (arg=<optimized out>) at pthread_create.c:454
[#21](/issue/ValveSoftware/SteamVR-for-Linux/21) 0x00007f2c905822bc in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

Thread 1 (Thread 0x7f2c90429780 (LWP 18374) "vrserver"):
#0  futex_wait (futex_word=0x7f2c640f16c8, expected=2, private=0) at ../sysdeps/nptl/futex-internal.h:126
#1  __GI___lll_lock_wait (futex=futex@entry=0x7f2c640f16c8, private=0) at lowlevellock.c:49
#2  0x00007f2c905020c4 in lll_mutex_lock_optimized (mutex=0x7f2c640f16c8) at pthread_mutex_lock.c:48
#3  ___pthread_mutex_lock (mutex=0x7f2c640f16c8) at pthread_mutex_lock.c:87
#4  0x00007f2c848bbca1 in SVLAudioPipewire::Stop() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
#5  0x00007f2c848bbd0d in SVLAudioPipewire::~SVLAudioPipewire() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
#6  0x00007f2c848bbd32 in SVLAudioPipewire::~SVLAudioPipewire() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
#7  0x00007f2c8487bb90 in SVLRoot::~SVLRoot() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
#8  0x00007f2c848b0751 in SVLServer::~SVLServer() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
#9  0x00007f2c848b07b2 in SVLServer::~SVLServer() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
[#10](/issue/ValveSoftware/SteamVR-for-Linux/10) 0x00007f2c848b0cd6 in SVLDriver::~SVLDriver() () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
[#11](/issue/ValveSoftware/SteamVR-for-Linux/11) 0x00007f2c904a84bc in __cxa_finalize (d=0x7f2c84b83ba0) at cxa_finalize.c:97
[#12](/issue/ValveSoftware/SteamVR-for-Linux/12) 0x00007f2c84845fe3 in __do_global_dtors_aux () from target:/home/sapphire/.local/share/Steam/steamapps/common/SteamVR/drivers/vrlink/bin/linux64/driver_vrlink.so
[#13](/issue/ValveSoftware/SteamVR-for-Linux/13) 0x00007fff3023ec50 in ?? ()
[#14](/issue/ValveSoftware/SteamVR-for-Linux/14) 0x00007f2c90aa1012 in _dl_call_fini (closure_map=0x7f2c68004ab0) at dl-call_fini.c:43
TToasty449 2026-05-17 github

Same behavior observed on Bazzite 44, have to kill the process in System Monitor.

Edit: This was using a Quest 3 via Steam link.

PPacketdancer 2026-05-18 github

Are all the folks seeing this running Bazzite, or are other distros affected?

PPacketdancer 2026-05-18 github

Oh, wait, I see the Debian Trixie mention in the first post now. Okay, so it's not distro-specific, good to know.

IImSapphire 2026-05-19 github

yeah, I'm using Arch.

AAdmer456 2026-05-19 github

Can confirm this also happens on NixOS 25.11! (Pico 4 headset)

Qqtrrb 2026-05-19 github

Same behavior observed on Nix 25.11 with Oculus Quest 2 and Steam Link

PPacketdancer 2026-05-19 github

Yeah, it seems to definitely be an issue specifically with VRLink. At this point, the information I'm mostly interested in is whether anyone sees this with a wired headset -- if so, there's something else at play, but if it's ONLY VRLink connections that this happens with, I think I know where I need to dig a bit deeper.

Ppopzxc 2026-05-20 github

Arch / SteamLink / Meta Quest 3 for me, have not tried wired.

PPacketdancer 2026-05-20 github

That was surprisingly more annoying to untangle than I expected, but there's a fix for this in main now, so hopefully that can get flipped over to the release branch before the next beta build. :)

Jjoshcancode 2026-05-26 github

I can also confirm I have this issue, I deal with it for now by doing pkill -9 vrserver to fully stop SteamVR if it happens

PPacketdancer 2026-06-05 github

Just to keep you posted: this fix has shifted over to release, and so will be in the 2.17.x beta builds when the first one lands. :)

Ppopzxc 2026-06-08 github

It looks like after the latest update, the issue is now resolved (arch/x11, SteamVR Beta from Jun 6, 2026).
Now SteamVR exits properly.

Thanks! ❤️

PPacketdancer 2026-06-08 github

Glad it works for you! I'll go ahead and close this out now. :)

Nothing extracted yet.