Those with rolling release Linux distributions that quickly adapt to new toolchain updates will find that Easy Anti Cheat (EAC) compatible games break when running on the recently released Glibc 2.36. The break stems from the fact that the DT_HASH section in the GNU C library has been removed, but EAC is one of the few software that still expects that section instead of DT_GNU_HASH.
Glibc 2.36 brought many changes with its release in early August. Unfortunately, dropping the unconditional setting of “–hash-style=both” to ensure that both the DT_HASH and GNU_DT_HASH sections are present in the GNU C library shared object causes Easy Anti Cheat and other selected software will be broken. Once Arch Linux users and others started moving to Glibc 2.36, problems were quickly noticed by Linux gamers with Steam Play and the titles that used this anti-cheat protection from Epic Games until now.
DT_GNU_HASH is better structured than DT_HASH, although DT_HASH for ELF object hash tables for runtime symbol resolution. DT_GNU_HASH has been around for a decade and a half and can lead to much faster pairing and loading times. Most Linux distributions and open source software have been happily using DT_GNU_HASH for years.
A Proton issue since earlier this month has kept track of how Glibc breaks 2.36 EAC-required games on Linux.
With Glibc 2.36, DT_HASH is no longer set since they dropped “–hash-style=both”, as the DT_GNU_HASH is superior, most systems should just use that, and eliminating the DT_HASH section saves about 1% or 16 kB space for the Glibc shared object. But it turns out that Epic Games still relies on DT_HASH and this anti-cheat module can’t load protected games using Glibc 2.36.
This is not solely an EAC issue, but some other software, such as libstrangle, now also breaks on Glibc 2.36 as a result of this change. There is an upstream Glibc bug report on the issue, but there is no final action yet with upstream developers hesitant to undo the change.
The issue over the past week and a half has been discussed in depth within Valve’s Proton problem tracker. For those on Arch Linux where the issue was first reported due to the rolling release updates, glibc 2.36-2 is currently testing that distribution package will undo the previous hash style change in GNU Glibc so that both styles are now built. Linux gamers have already tested that upcoming Arch Linux package update and confirmed that EAC compatible games work properly.
Now we’ll see what happens to upstream GNU C library developers around this or if they wait it out and kick the ball in Epic Games’ field to switch from depending on DT_HASH to the DT_GNU_HASH that has been widely used on Linux systems for over a decade.