One linker flag in DXVK stops an EA anti-cheat crash, and Proton had it six hours later

One linker flag in DXVK stops an EA anti-cheat crash, and Proton had it six hours later

DXVK now builds its release DLLs with eight-character PE section names to stop a crash inside an EA anti-cheat check, and the entire change is one linker flag. The commit landed on DXVK's master branch at 14:14:36 UTC on October 12, and a Proton bleeding-edge build made six hours later already pins it. It was written two days earlier by Matthias Mailänder and committed by DXVK maintainer Philip Rebohle.

Store banner for EA Sports WRC showing a rally car in deep snow beside pine trees

EA Sports WRC, Steam appid 1849250, is the only game the DXVK commit names. Image: Electronic Arts

Its subject line names the fault, "[meta] Workaround a crash in EA anti cheat code signing checks", and its body names a single game: EA Sports WRC, Steam appid 1849250, developed by Codemasters and published by Electronic Arts. DXVK's own comment on the change reads: "Follow PE standards with 8 character name sections, some software that inspects our DLLs may otherwise crash. For dwarf2 symbols to work we need to keep the mingw defaults."

One flag, and only in release builds

Mechanically, DXVK now passes -Wl,--disable-long-section-names to the linker whenever the debug option is off. Debug builds keep MinGW's defaults untouched, which is what the dwarf2 symbols need. The shorter names therefore apply to the libraries people play on and not to the ones developers debug with.

DXVK is the layer that turns Direct3D calls into Vulkan, and Valve ships it inside Proton. It is not Valve's project. It belongs to the developer known as doitsujin, who closed pull request 5968 with two words, "Merged manually." His reading of the problem was mild: MinGW "emits non-standard PE binaries by default" that "Windows-native tooling might choke on", and "there shouldn't be any harm in landing this".

The fix came from the player who hit it

Mailänder is an outside contributor rather than a Valve or CodeWeavers account, and the diagnosis in the pull request is his rather than EA's or Valve's. He writes that an LLM coding tool tracked a report on EA's own forum down to "a faulty Microsoft Authenticode check that is triggered by trailing bytes of the MingW build", and that the compiler flag "eliminates those and workarounds the crash". He says he tested the first version against DXVK 2.7.1, then recompiled and tested against 3.1.1 and master, and on October 11 he posted again to say of the rebuilt libraries: "I can confirm that these DLLs also don't crash."

He runs DXVK on Windows rather than on Linux, to work around visual glitches on an AMD 9000 series graphics card, which is how he met an anti-cheat check at all. His summary is blunt: "EA has stopped updates for this game and enabled anti-cheat, which is not a good position for consumers, who are now doomed to help themselves." The fault sits in the signature check that inspects those DLLs, so what changed is how DXVK produces them. EA has been switching anti-cheat on across its catalogue this autumn, including the September 29 rollout in Apex Legends that pushed Respawn to recommend the Steam client.

Proton's bleeding-edge tag carried it six hours later

The change reached a Valve-published build the same evening. The Proton repository's bleeding-edge tag ending d649c4b-v223075 points at a commit made at 20:33:42 UTC on October 12, and the tree at that tag pins its dxvk submodule to 649c4bc0f0e303fcf9e21fad1c36e30ebce79b02, the same commit. Six hours and 19 minutes separate the merge from that build.

Bleeding-edge is the fastest and least tested channel Valve publishes. It is not Proton Experimental and not the stable branch, which returned on October 12 with two EA App fixes after 49 quiet days. Opting into it means selecting it by hand in Steam's compatibility settings, and taking everything else that happens to be in it.

The scope stays narrow. One game is named in the commit, one code-signing check is described, and nothing in the change claims that long names were breaking anything else. What is broad is the build: every release DXVK library now follows the eight-character rule, which is a change to how an entire translation layer is compiled, on the strength of one player's bug report. It is the second DXVK change in a week to settle a crash that looked like somebody else's problem, after the Xid 109 hang in Deadlock that was settled in DXVK rather than in Nvidia's driver.

Leave a Comment

Your email address will not be published. Required fields are marked *