Glibc 2.36 Deleting DT_HASH broke simple anti-cheat games with Steam Play

Glibc 2.36 Deleting DT_HASH broke simple anti-cheat games with Steam Play
Written by admin


Those using rolling-release Linux distributions that quickly adapt to new toolchain updates are finding that Easy Anti Cheat (EAC)-enabled games break when running on the recently released glibc 2.36. The break comes from the fact that the DT_HASH section was deleted in the GNU C library, but EAC is among the few software that still expects this section instead of DT_GNU_HASH.

Glibc 2.36 brought many changes with its release in early August. Unfortunately, omitting the unconditional “–hash-style=both” setting to ensure that both the DT_HASH and GNU_DT_HASH sections are present in the GNU C library shared object resulted in Easy Anti Cheat and other selected software has been corrupted. As Arch Linux users and others began to migrate to Glibc 2.36, Linux gamers quickly became aware of issues with Steam Play and the titles previously using this anti-cheat protection from Epic Games.

DT_GNU_HASH is better structured than DT_HASH, although DT_HASH is used for ELF object hash tables for runtime symbol resolution. DT_GNU_HASH has been around for a decade and a half and can result in much faster connection and load times. Most Linux distributions and open source software have been happy to use DT_GNU_HASH for years.

AND problem with protons since earlier this month he has been following how glibc 2.36 breaks EAC-required games on Linux.

With glibc 2.36, DT_HASH is no longer set since they dropped “–hash-style=both” since DT_GNU_HASH is superior, most systems should just use that, and omitting the DT_HASH section saves about 1% or 16 kB of space for the Glibc shared object. But it turns out that Epic Games still relies on DT_HASH and this anti-cheat module cannot load protected games with glibc 2.36.

This is not exclusively an EAC problem, but another software like libstrangle now also broken on glibc 2.36 due to this change. There is a glibc bug report from upstream about the issue but no firm action yet as the upstream developers are reluctant to roll back the change.

The topic has been discussed extensively over the past week and a half Valve’s Proton Issue Tracker. For those on Arch Linux where the issue was first reported due to its continued release updates, glibc 2.36-2 is currently testing with this distribution package reverting the previous hash style change in GNU glibc, so both styles are now built will. Linux players have already tested the upcoming Arch Linux package update and confirmed that EAC-enabled games work correctly.

Now we will see what happens with the developers of the upstream GNU C library in this regard, or whether they wait it out and throw the ball in the field of Epic Games to switch from the dependency on DT_HASH to the DT_GNU_HASH, which has been widely used on Linux systems for over a decade.

About the author


Leave a Comment