---
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.

-->
