The release of Glibc 2.36 has created a significant disruption in the Linux gaming community, rendering numerous games unplayable and reigniting debates about application binary interface (ABI) stability on the platform. The issue stems from a change in how the GNU C Library handles symbol hash tables, affecting games that use Easy Anti-Cheat (EAC) and Epic Online Services (EOS), as well as other software.
The Technical Root Cause
The problem centers around two methods for providing symbol hash tables in the ELF format: DT_HASH and DT_GNU_HASH. While DT_HASH is part of the standard SYSV generic ABI and well-documented, DT_GNU_HASH is a newer, faster replacement that lacks proper documentation. For years, Glibc maintained compatibility by including both hash table formats, but version 2.36 dropped this requirement, relying instead on default settings that may only include the GNU variant.
This change has broken several high-profile games including those using EAC EOS protection, the indie title Shovel Knight, and open-source projects like the frame rate limiter libstrangle. The impact is expected to grow as more mainstream distributions adopt Glibc 2.36.
Note: ELF (Executable and Linkable Format) is the standard file format for executables and libraries on Linux systems.
Hash Table Comparison
- DT_HASH: Part of SYSV generic ABI, well-documented, mandatory standard
- DT_GNU_HASH: Newer replacement, smaller and faster, poorly documented
- Space Savings: Removing DT_HASH saves ~16KB per binary (less than 1% of total size)
- Compatibility: GNU linker defaults to "both", mold linker defaults to "sysv"
Community Response and Workarounds
The Linux gaming community has responded with mixed reactions to this development. Some developers argue that the focus should shift entirely to ensuring games work flawlessly through Proton (Valve's Windows compatibility layer) rather than maintaining native Linux versions. This sentiment reflects growing frustration with the challenges of native Linux game development.
Game devs should 100% focus on making sure their game runs flawlessly on Proton instead of releasing a half-assed Linux version.
Others advocate for better cross-platform development practices from the ground up, suggesting that developers should avoid platform-specific technologies like DirectX in favor of cross-platform alternatives like Vulkan. However, the reality is that many existing games cannot be easily modified or recompiled to accommodate these changes.
Affected Software
- Games using Easy Anti-Cheat (EAC) and Epic Online Services (EOS)
- Shovel Knight (indie game)
- libstrangle (open-source frame rate limiter)
- Additional software expected to be affected as Glibc 2.36 reaches mainstream distributions
The Broader Implications
This incident highlights a fundamental tension in Linux development between technical progress and backward compatibility. While the change technically saves space (about 16KB per binary) and isn't considered an official ABI break, it has real-world consequences for users and developers. The situation is complicated by the fact that different distributions may handle this change differently, potentially increasing fragmentation.
The controversy also underscores why some developers find Windows development more predictable, despite Linux's technical advantages. Interestingly, several community members noted that Proton sometimes provides better game performance than native Windows, citing examples like Elden Ring where DirectX 12 translation fixes were implemented faster in Wine's VKD3D than in Windows itself.
Conclusion
The Glibc 2.36 situation serves as a reminder of the ongoing challenges facing Linux as a gaming platform. While the technical merits of the change are debatable, its impact on existing software demonstrates the delicate balance between innovation and stability in open-source ecosystems. As the Linux gaming landscape continues to evolve, this incident may accelerate the trend toward compatibility layers like Proton rather than native development, fundamentally changing how games reach Linux users.
Reference: Win32 Is The Only Stable ABI on Linux
