SteamVR

SteamVR

Error 303 A key component of SteamVR isn't working correctly
After running the SteamVR Performance Test, SteamVR throws an error upon launching it "A key component of SteamVR isn't working correctly. Please reinstall SteamVR (303)".

I did that twice and the second time around I also deleted the steamvr.vrsettings file, rebooted my PC and tried a differented DisplayPort on my GPU.

The errors I could find in the logfiles would be this in vrserver.txt
Rejecting vrclient connection from /home/omega/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrmonitor with client DLL "/home/omega/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrclient.so" (v1.15.12)

This in vrmonitor.txt
Steam] Connect to Steam finished: check for dismissable warnings [Status Alert] Something is wrong (303) [System] Transition from 'SteamVRSystemState_Startup' to 'SteamVRSystemState_Connecting'. [Status Alert] Something is wrong (303) [System] System is running for 10 seconds. [System] Transition from 'SteamVRSystemState_Connecting' to SteamVRSystemState_NotReady'.

This in vrclient_vrmonitor and in vrclient_vrstartup
Received success response from vrserver connect App key after connect message:openvr.component.vrmonitor CIPCPipe::ConnectPipe(VR_CompositorPipe_2961) attempting connect to steamvr:VR_CompositorPipe_2961 Unable to connect to pipe errno=111 Starting vrcompositor process: /home/omega/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher Failed to start vrcompositor. Giving up

Mesa version is 20.3.0 and kernel is 5.9.13 and I'm using an AMD GPU.

*edit*
I tinkered around a bit and started launching the compositor by itself after launching SteamVR and SteamVR showing the error message. The compositor immediately crashed. I started it again in gdb, but it succeeded and suddenly my headset was working again. I think shut SteamVR down again, started it again. Got the error message again. Then started the compositor in gdb and got this stacktrace
Compositor render thread started Startup Complete (0.513136 seconds) Failed to set thread priority: set failed for 15: -1: setpriority() failed Failed to set thread priority: setschedparam failed 15: 1 Failed to set thread priority: invalid priority 15 --Type <RET> for more, q to quit, c to continue without paging-- Thread 31 "vrcompositor" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fff8727d640 (LWP 12345)] 0x0000000000000000 in ?? () (gdb) bt #0 0x0000000000000000 in ?? () #1 0x00007ffff7d6674a in ?? () from /home/omega/.steam/steam/steamapps/common/SteamVR/bin/linux64/libSDL2-2.0.so.0 #2 0x00007ffff7d66c9d in ?? () from /home/omega/.steam/steam/steamapps/common/SteamVR/bin/linux64/libSDL2-2.0.so.0 #3 0x00007ffff7d70359 in ?? () from /home/omega/.steam/steam/steamapps/common/SteamVR/bin/linux64/libSDL2-2.0.so.0 #4 0x00000000004c72d1 in ThreadSetPriority () #5 0x0000000000499ad6 in CRenderThread::Run() () #6 0x00000000004c6ba0 in SteamThreadTools::CThread::ThreadProc(void*) () #7 0x00007ffff741d3e9 in start_thread () from /usr/lib/libpthread.so.0 #8 0x00007ffff734b293 in clone () from /usr/lib/libc.so.6

I then quit the gdb session and launched the compositor again and that time it worked. The displays on the Index turned on and I saw my normal VR home. Repeating all of this, it turns out if I start the compositor twice after SteamVR failed, it works.

The command with which I start the compositor is this
export LD_LIBRARY_PATH=~/.steam/steam/steamapps/common/SteamVR/bin/linux64/ ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher

If one wants to debug, put gdb in front of the call to the vrcompositor-launcher.
After running the SteamVR Performance Test, SteamVR throws an error upon launching it "A key component of SteamVR isn't working correctly. Please reinstall SteamVR (303)".

I did that twice and the second time around I also deleted the steamvr.vrsettings file, rebooted my PC and tried a differented DisplayPort on my GPU.

The errors I could find in the logfiles would be this in vrserver.txt
Rejecting vrclient connection from /home/omega/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrmonitor with client DLL "/home/omega/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrclient.so" (v1.15.12)

This in vrmonitor.txt
Steam] Connect to Steam finished: check for dismissable warnings [Status Alert] Something is wrong (303) [System] Transition from 'SteamVRSystemState_Startup' to 'SteamVRSystemState_Connecting'. [Status Alert] Something is wrong (303) [System] System is running for 10 seconds. [System] Transition from 'SteamVRSystemState_Connecting' to SteamVRSystemState_NotReady'.

This in vrclient_vrmonitor and in vrclient_vrstartup
Received success response from vrserver connect App key after connect message:openvr.component.vrmonitor CIPCPipe::ConnectPipe(VR_CompositorPipe_2961) attempting connect to steamvr:VR_CompositorPipe_2961 Unable to connect to pipe errno=111 Starting vrcompositor process: /home/omega/.local/share/Steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher Failed to start vrcompositor. Giving up

Mesa version is 20.3.0 and kernel is 5.9.13 and I'm using an AMD GPU.

*edit*
I tinkered around a bit and started launching the compositor by itself after launching SteamVR and SteamVR showing the error message. The compositor immediately crashed. I started it again in gdb, but it succeeded and suddenly my headset was working again. I think shut SteamVR down again, started it again. Got the error message again. Then started the compositor in gdb and got this stacktrace
Compositor render thread started Startup Complete (0.513136 seconds) Failed to set thread priority: set failed for 15: -1: setpriority() failed Failed to set thread priority: setschedparam failed 15: 1 Failed to set thread priority: invalid priority 15 --Type <RET> for more, q to quit, c to continue without paging-- Thread 31 "vrcompositor" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fff8727d640 (LWP 12345)] 0x0000000000000000 in ?? () (gdb) bt #0 0x0000000000000000 in ?? () #1 0x00007ffff7d6674a in ?? () from /home/omega/.steam/steam/steamapps/common/SteamVR/bin/linux64/libSDL2-2.0.so.0 #2 0x00007ffff7d66c9d in ?? () from /home/omega/.steam/steam/steamapps/common/SteamVR/bin/linux64/libSDL2-2.0.so.0 #3 0x00007ffff7d70359 in ?? () from /home/omega/.steam/steam/steamapps/common/SteamVR/bin/linux64/libSDL2-2.0.so.0 #4 0x00000000004c72d1 in ThreadSetPriority () #5 0x0000000000499ad6 in CRenderThread::Run() () #6 0x00000000004c6ba0 in SteamThreadTools::CThread::ThreadProc(void*) () #7 0x00007ffff741d3e9 in start_thread () from /usr/lib/libpthread.so.0 #8 0x00007ffff734b293 in clone () from /usr/lib/libc.so.6

I then quit the gdb session and launched the compositor again and that time it worked. The displays on the Index turned on and I saw my normal VR home. Repeating all of this, it turns out if I start the compositor twice after SteamVR failed, it works.

The command with which I start the compositor is this
export LD_LIBRARY_PATH=~/.steam/steam/steamapps/common/SteamVR/bin/linux64/ ~/.steam/steam/steamapps/common/SteamVR/bin/linux64/vrcompositor-launcher

If one wants to debug, put gdb in front of the call to the vrcompositor-launcher.