Glibc 2.36 Dropping DT_HASH 通过 Steam Play 打破了简单的反作弊游戏

Glibc 2.36 带来了很多变化8月初发布。不幸的是,它放弃了无条件设置“--hash-style=both”以确保 GNU C 库共享对象中同时存在 DT_HASH 和 GNU_DT_HASH 部分,这最终破坏了 Easy Anti Cheat 和其他选择软件。一旦 Arch Linux 用户和其他人开始转向 Glibc 2.36,使用 Steam Play 的 Linux 游戏玩家以及迄今为止使用 Epic Games 的这种反作弊保护的游戏很快就发现了问题。

DT_GNU_HASH 比 DT_HASH 结构更好,尽管 DT_HASH 用于 ELF 对象哈希表以进行运行时符号解析。DT_GNU_HASH 已经存在了 15 年,它可以带来更快的链接和加载时间。大多数 Linux 发行版和开源软件多年来一直在愉快地使用 DT_GNU_HASH。

image.php_-43

自本月初以来,Proton 的一个问题一直在跟踪 Glibc 2.36 如何破坏 Linux 上需要 EAC 的游戏。

在 Glibc 2.36 中,DT_HASH 不再设置,因为它们删除了“--hash-style=both”,因为 DT_GNU_HASH 更优越,大多数系统应该只是使用它,并且消除 DT_HASH 部分可以节省大约 1% 或 16kB 的空间Glibc 共享对象。但事实证明,Epic Games 仍然依赖 DT_HASH,并且这个反作弊模块将无法加载受 Glibc 2.36 保护的游戏。

这不仅是 EAC 问题,而且由于此更改,一些其他软件(例如 libstrangle)现在也在 Glibc 2.36 上中断。上游有关于该问题的 Glibc 错误报告,但尚未采取任何坚定的行动,上游开发人员对恢复更改犹豫不决。

过去一周半的问题已在内部进行了彻底讨论Valve 的 Proton 问题跟踪器。对于那些在 Arch Linux 上由于其滚动发布更新而首次报告问题的用户,glibc 2.36-2 目前正在测试该分发包是否恢复了 GNU Glibc 中早期的哈希样式更改,因此现在构建了这两种样式。Linux 游戏玩家已经测试了即将推出的 Arch Linux 软件包更新,并确认支持 EAC 的游戏正常运行。

H2
H3
H4
3 columns
2 columns
1 column
Join the conversation now
Logo
Center