Glibc 2.36 Dropping DT_HASH Has Been Breaking Easy Anti Cheat Games With Steam Play

Written by Michael Larabel in Linux Gaming on 13 August 2022 at 08:00 PM EDT. 65 Comments
LINUX GAMING
Those on rolling-release Linux distributions that are quick to adapt to new toolchain updates are finding Easy Anti Cheat (EAC) enabled games breaking when running on the recently released Glibc 2.36. The breakage stems from the DT_HASH section being dropped in GNU C Library but EAC being among the few software still expecting that section rather than DT_GNU_HASH.

Glibc 2.36 brought many changes with its release at the beginning of August. Unfortunately, its dropping of unconditionally setting "--hash-style=both" to ensure both DT_HASH and GNU_DT_HASH sections are present in the GNU C Library shared object ended up breaking Easy Anti Cheat and other select software. Once Arch Linux users and others began moving to Glibc 2.36, problems were quickly noticed by Linux gamers with Steam Play and the titles so far using this anti-cheat protection from Epic Games.

DT_GNU_HASH is better structured than DT_HASH although DT_HASH for ELF object hash tables for run-time symbol resolution. DT_GNU_HASH has been around for a decade and a half and can lead to much faster linking 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 been tracking how Glibc 2.36 breaks EAC-required games on Linux.


With Glibc 2.36, DT_HASH no longer gets set since they dropped "--hash-style=both" since the DT_GNU_HASH is superior, most systems should just be using that, and eliminating the DT_HASH section saves about 1% or 16kB of space for the Glibc shared object. But it turns out that Epic Games still relies on DT_HASH and this anti-cheat module will fail to load protected games with Glibc 2.36.

This isn't exclusively an EAC problem but some other software such as libstrangle also now break on Glibc 2.36 due to this change. There is an upstream Glibc bug report over the issue but no firm action yet with upstream developers being hesitant on reverting the change.

The issue over the past week and a half has been discussed thoroughly within Valve's Proton issue tracker. For those on Arch Linux where the problem was first reported due to its rolling release updates, glibc 2.36-2 is currently in testing that with that distribution package reverts the earlier hash-style change in GNU Glibc so both styles are now built. Linux gamers have already tested that forthcoming Arch Linux package update and confirmed that EAC-enabled games are working correctly.

Now we'll see what happens with upstream GNU C Library developers around this or if they'll wait it out and punt the ball into Epic Games' court to switch from depending upon DT_HASH to the DT_GNU_HASH that has been widely used on Linux systems for over a decade.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week