VRChat EAC: Rewrite

EAC startup errors are really rare now. Let's write the article in the
past tense.
This commit is contained in:
hypevhs 2024-08-30 02:00:39 +00:00
parent 3659752e20
commit e5276b5b70

View file

@ -5,26 +5,58 @@ title: Easy Anti-Cheat
# Easy Anti-Cheat # Easy Anti-Cheat
Sometimes, seemingly randomly, you can get an EAC error during the VRChat startup/login screen. It looks like a message box, with the title "Anti-cheat Error", no actual message text, and a single button labeled "Quit". Running VRChat on Linux *used to be* prone to unwarranted EAC errors. Sometimes, seemingly randomly, you would get an EAC error during the VRChat startup/login screen. It looks like a message box, with the title "Anti-cheat Error", a message referring to a filepath that failed to validate integrity, and a single button labeled "Quit". This would trigger even when all files were unmodified.
## Recommended Workaround Thankfully, at some point in October or November 2024, **these EAC errors resolved themselves**. While it is still possible to get EAC errors for other reasons, the race condition that made it a coin-flip on startup no longer plagues us.
If you are running into EAC errors still, try these options:
- Trigger a reinstall of the EAC runtime by moving the [Proton prefix for VRChat](https://www.pcgamingwiki.com/wiki/VRChat#Configuration_file.28s.29_location) somewhere else, forcing Steam to regenerate it on next launch
- Make sure you are not blocking the EAC domains, such as `modules-cdn.eac-prod.on.epicgames.com`
- Do not set `SDL_VIDEODRIVER` env var anywhere - this breaks the splash screen
- Do not use the `VR_OVERRIDE` env var
The below workaround shouldn't be necessary anymore, but is kept here in case the issue comes back someday.
## Workaround
Wrapper script for starting VRChat: [startvrc.sh on GitHub](https://gist.github.com/galister/ca63a5795694e4c839a8e7f4bb8a35bc) Wrapper script for starting VRChat: [startvrc.sh on GitHub](https://gist.github.com/galister/ca63a5795694e4c839a8e7f4bb8a35bc)
Set startup options for VRChat: Set startup options for VRChat:
`/path/to/startvrc.sh %command%` `/path/to/startvrc.sh %command%`
If you're using extra env vars, they should go first: If you're using extra env vars, they should go first:
`PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/monado_comp_ipc /path/to/startvrc.sh %command%` `PRESSURE_VESSEL_FILESYSTEMS_RW=/run/user/1000/monado_comp_ipc /path/to/startvrc.sh %command%`
<!--
## Root Cause ## Root Cause
We are still trying to determine the cause. We are still trying to determine the cause.
Here is what we know:
- The filepath in the message always refers to a file within `steamapps/common/VRChat`.
- EAC errors can trigger even when all these files are completely pristine.
- The triggering file can be different each time.
- EAC doesn't care about any of the files in `AppData/LocalLow/VRChat`. This means yt-dlp.exe, logs, the local cache, etc are not subject to integrity checks.
- Getting multiple EAC errors in a row is very possible.
- Some EAC info is also written to the VRChat log file.
- EAC errors can also happen on Steam Deck.
- EAC errors can happen regardless of Proton version, kernel version, distro.
- EAC errors can happen regardless of whether you're in in VR or desktop mode.
- The message box used to have no actual message text. The message returned in a VRChat update, possibly on the serverside and without a steam depot update, sometime between 2024-03-25 and 2024-03-28.
It is likely caused by a race condition. Closing unnecessary apps or otherwise **lowering your CPU usage** before starting VRChat seems to make the EAC error happen significantly less often. It is safe to crank the CPU usage back up after the home world has loaded. It is likely caused by a race condition. Closing unnecessary apps or otherwise **lowering your CPU usage** before starting VRChat seems to make the EAC error happen significantly less often. It is safe to crank the CPU usage back up after the home world has loaded.
Some approaches we haven't tried or fully documented:
- Is it tied to network speed? Slow down connection to EAC servers - DNS delay or traffic shaping
- Is it tied to filesystem? Compare between ext4, btrfs, etc
- Analyze EAC-related network traffic
- Blocking EAC servers
- Slowing down IO read speed
- Debugging with winedbg or bpftrace (because strace and gdb both trigger an immediate splash screen and disconnect)
- REing EAC itself
The following sections do not fix the issue, but are still kept on the wiki to dispel rumors and record research. The following sections do not fix the issue, but are still kept on the wiki to dispel rumors and record research.
## (Outdated) glibc dt_gnu_hash ## (Outdated) glibc dt_gnu_hash
@ -44,3 +76,5 @@ As of 2024-02-09, Arch Linux no longer ships with this flag.
- Gentoo users could enable the fix using the `hash-sysv-compat` USE flag on `sys-libs/glibc`. - Gentoo users could enable the fix using the `hash-sysv-compat` USE flag on `sys-libs/glibc`.
To reiterate, this glibc flag does _not_ appear to fix VRChat's particular flavor of EAC failures. To reiterate, this glibc flag does _not_ appear to fix VRChat's particular flavor of EAC failures.
-->