mirror of
https://gitlab.com/lvra/lvra.gitlab.io.git
synced 2025-04-28 10:18:29 +02:00
80 lines
4.3 KiB
Markdown
80 lines
4.3 KiB
Markdown
---
|
|
weight: 50
|
|
title: Easy Anti-Cheat
|
|
---
|
|
|
|
# Easy Anti-Cheat
|
|
|
|
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.
|
|
|
|
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)
|
|
|
|
Set startup options for VRChat:
|
|
`/path/to/startvrc.sh %command%`
|
|
|
|
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%`
|
|
|
|
<!--
|
|
|
|
## Root 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.
|
|
|
|
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.
|
|
|
|
## (Outdated) glibc dt_gnu_hash
|
|
|
|
Previously, we believed it to be related to an incompatible glibc version. However, upon further testing, this turned out to be insufficient.
|
|
|
|
In other games with EAC, getting past the EAC splash screen had required glibc to be built with a specific flag to work.<sup>[1],[2]</sup> (`--hash-style=both`)
|
|
|
|
[1]: https://github.com/ValveSoftware/Proton/issues/6051
|
|
[2]: https://www.phoronix.com/news/Glibc-2.36-EAC-Problems
|
|
|
|
Flatpak Steam includes this flag, however Flatpak Steam is not recommended for VR.
|
|
|
|
As of 2024-02-09, Arch Linux no longer ships with this flag.
|
|
|
|
- Arch users could use this EAC-specific glibc from the AUR: https://aur.archlinux.org/packages/glibc-eac
|
|
- 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.
|
|
|
|
-->
|