Bug 47150 - Не работает Easy Anti-Cheat в steam (sysv linker hashes in glibc)
Summary: Не работает Easy Anti-Cheat в steam (sysv linker hashes in glibc)
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: glibc (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 minor
Assignee: placeholder@altlinux.org
QA Contact: qa-sisyphus
URL: https://bugs.archlinux.org/task/79292
Keywords:
Depends on:
Blocks:
 
Reported: 2023-08-07 18:11 MSK by Mikhail Tergoev
Modified: 2023-09-01 20:04 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mikhail Tergoev 2023-08-07 18:11:58 MSK
Не работают игры с Easy Anti-Cheat в steam при glibc 2.36+

Нашел:
https://github.com/ValveSoftware/Proton/issues/6051
где описывается проблема, если glibc 2.36+

Дальше нашел пример как в Арче вышли из ситуации:
https://github.com/archlinux/svntogit-packages/blob/packages/glibc/trunk/reenable_DT_HASH.patch

И большая статья по этому поводу:
https://maskray.me/blog/2022-08-20-glibc-and-dt-gnu-hash
Comment 1 Dmitry V. Levin 2023-08-08 13:08:42 MSK
Я думаю, что нам не стоит откатывать https://sourceware.org/cgit/glibc/commit/?id=e47de5cb2d4dbecb58f569ed241e8e95c568f03c, пусть лучше проприетарщики актуализируют свой протухший софт.
Comment 2 Mikhail Tergoev 2023-08-08 13:37:06 MSK
(Ответ для Dmitry V. Levin на комментарий #1)
> Я думаю, что нам не стоит откатывать
> https://sourceware.org/cgit/glibc/commit/
> ?id=e47de5cb2d4dbecb58f569ed241e8e95c568f03c, пусть лучше проприетарщики
> актуализируют свой протухший софт.

Судя из: https://bugs.archlinux.org/task/79292

A quick test with a glibc 2.38 build with --hash-style=both does work for me,
so just adding that to the LDFLAGS for glibc seems to be enough, no patch needed.
Comment 3 Gleb F-Malinovskiy 2023-08-10 19:17:18 MSK
(In reply to Mikhail Tergoev from comment #2)
> Судя из: https://bugs.archlinux.org/task/79292
> 
> A quick test with a glibc 2.38 build with --hash-style=both does work for me,
> so just adding that to the LDFLAGS for glibc seems to be enough, no patch
> needed.

Патч или не патч это вопрос реализации.  Если бы мы хотели откатить это изменение, то откатить указанный Димой коммит было бы самым лучшим решением.  Но мы не хотим и дело тут не в способе решения.
Comment 4 Anton Farygin 2023-08-10 20:35:11 MSK
Почти наверняка может вылезти где-то ещё, пусть лучше повисит в открытом виде.

Всё-таки совместимость с софтом лучше не ломать.
Comment 5 Gleb F-Malinovskiy 2023-08-11 10:47:01 MSK
Если вдруг кому-то очень нужно:

# cat /etc/apt/vendors.list.d/team.list
simple-key "team-glebfm" {
        Fingerprint "ABADA2EF01C15A653AC3425B51D2B221D1D1C7E6";
        Name "glebfm@altlinux.org";
}
# tail -1 /etc/apt/sources.list        
rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64 hasher
Comment 6 Mikhail Tergoev 2023-08-11 15:10:36 MSK
# apt-repo add rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64 hasher

Так как нужно еще и i586, добавляю и его:
# apt-repo add rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth i586 hasher

# apt-repo upgrade
Получено: 1 http://ftp.altlinux.org glebfm/glibc-hashstyleboth/x86_64 release [2776B]
Получено: 2 http://ftp.altlinux.org glebfm/glibc-hashstyleboth/i586 release [2776B]
Получено: 3 http://ftp.altlinux.org ALTLinux/Sisyphus/x86_64 release [4238B]
Получено: 4 http://ftp.altlinux.org ALTLinux/Sisyphus/x86_64-i586 release [1680B]
Получено: 5 http://ftp.altlinux.org ALTLinux/Sisyphus/noarch release [2859B]
Получено 14,3kB за 0s (221kB/s).                   
Получено: 1 http://ftp.altlinux.org glebfm/glibc-hashstyleboth/x86_64/hasher pkglist [28,5kB]
Получено: 2 http://ftp.altlinux.org glebfm/glibc-hashstyleboth/x86_64/hasher release [125B]
Получено: 3 http://ftp.altlinux.org glebfm/glibc-hashstyleboth/i586/hasher pkglist [28,8kB]
Получено: 4 http://ftp.altlinux.org glebfm/glibc-hashstyleboth/i586/hasher release [125B]
Найдено http://ftp.altlinux.org ALTLinux/Sisyphus/x86_64/classic pkglist
Найдено http://ftp.altlinux.org ALTLinux/Sisyphus/x86_64/classic release
Найдено http://ftp.altlinux.org ALTLinux/Sisyphus/x86_64/gostcrypto pkglist
Найдено http://ftp.altlinux.org ALTLinux/Sisyphus/x86_64/gostcrypto release
Найдено http://ftp.altlinux.org ALTLinux/Sisyphus/x86_64-i586/classic pkglist
Найдено http://ftp.altlinux.org ALTLinux/Sisyphus/x86_64-i586/classic release
Найдено http://ftp.altlinux.org ALTLinux/Sisyphus/noarch/classic pkglist
Найдено http://ftp.altlinux.org ALTLinux/Sisyphus/noarch/classic release
Получено 57,5kB за 0s (482kB/s).
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
Подсчет обновлений... Завершено
Следующие пакеты будут ОБНОВЛЕНЫ:
  glibc glibc-core glibc-debug glibc-devel glibc-devel-static glibc-doc glibc-gconv-modules glibc-i18ndata glibc-locales glibc-nss
  glibc-pthread glibc-timezones glibc-utils iconv libnsl1 nscd
Следующие пакеты будут УДАЛЕНЫ:
  тут удаляются i586 пакеты включая i586-steam
16 будет обновлено, 0 новых установлено, 111 пакетов будет удалено и 0 не будет обновлено.

Что я делаю не так?

# cat /etc/apt/sources.list  
rpm [team-glebfm] http://ftp.altlinux.org/pub/people glebfm/glibc-hashstyleboth/x86_64 hasher
rpm [team-glebfm] http://ftp.altlinux.org/pub/people glebfm/glibc-hashstyleboth/i586 hasher
Comment 7 Gleb F-Malinovskiy 2023-08-11 16:04:26 MSK
(In reply to Mikhail Tergoev from comment #6)
> # apt-repo add rpm [team-glebfm]
> http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64 hasher
> 
> Так как нужно еще и i586, добавляю и его:
> # apt-repo add rpm [team-glebfm]
> http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth i586 hasher

Нет, нужно не i586, а x86_64-i586, т.е. arepo.  Я про него совсем забыл.

Я добавил arepo, теперь можно использовать:

rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64 hasher
rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64-i586 hasher
Comment 8 Mikhail Tergoev 2023-08-11 17:18:15 MSK
x86_64-i586 - первым делом пробовал, но не работало.

Теперь всё ок. Античиты снова работают.

Оставлю тут простейшую пошаговую инструкцию:
# apt-repo add rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64 hasher
# apt-repo add rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64-i586 hasher
# apt-repo upgrade
Comment 9 Gleb F-Malinovskiy 2023-08-11 17:23:22 MSK
(In reply to Mikhail Tergoev from comment #8)
> x86_64-i586 - первым делом пробовал, но не работало.
Да, я про него забыл совсем, а не только написать про него.

> Оставлю тут простейшую пошаговую инструкцию:
Без vendors.list не заработает проверка подписи через [team-glebfm].
Comment 10 Mikhail Tergoev 2023-08-11 17:32:09 MSK
> Без vendors.list не заработает проверка подписи через [team-glebfm].

Исправляюсь:

# apt-repo add rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64 hasher

# apt-repo add rpm [team-glebfm] http://ftp.altlinux.org/pub/people/glebfm/glibc-hashstyleboth x86_64-i586 hasher

# echo -e 'simple-key "team-glebfm" {\n        Fingerprint "ABADA2EF01C15A653AC3425B51D2B221D1D1C7E6";\n        Name "glebfm@altlinux.org";\n}' >> /etc/apt/vendors.list.d/team.list

# apt-repo upgrade
Comment 11 Vitaly Lipatov 2023-08-13 18:27:48 MSK
(Ответ для Mikhail Tergoev на комментарий #0)
> Не работают игры с Easy Anti-Cheat в steam при glibc 2.36+
> 
> Нашел:
> https://github.com/ValveSoftware/Proton/issues/6051
> где описывается проблема, если glibc 2.36+
> 
> Дальше нашел пример как в Арче вышли из ситуации:
> https://github.com/archlinux/svntogit-packages/blob/packages/glibc/trunk/
> reenable_DT_HASH.patch
...
Конечно, стало известно, что «for EPIC Games EAC, there is already a fix for this in EOS SDK 1.15.2 (August 2022) and the corresponding version of the anti-cheat module».
Как я понимаю, это разработчикам всех игр нужно пересобраться с обновлённым SDK.

В Fedora рассматривали эту проблему
https://bugzilla.redhat.com/show_bug.cgi?id=2129358

и решили не ломать Fedora как игровую платформу:
* Пн окт 17 2022 Carlos O'Donell <carlos@redhat.com> - 2.36.9000-10
- Enable ELF DT_HASH for shared objects and the dynamic loader (#2129358)


(Ответ для Dmitry V. Levin на комментарий #1)
> Я думаю, что нам не стоит откатывать
> https://sourceware.org/cgit/glibc/commit/
> ?id=e47de5cb2d4dbecb58f569ed241e8e95c568f03c, пусть лучше проприетарщики
> актуализируют свой протухший софт.
Ну это же просто такой хитрый оборот, всем понятно, что проприетарщики по определению ничего не будут актуализировать.
С другой стороны, разработчики glibc считают возможным незаметно выключать поддержку DT_HASH без всякого анонса. Точнее, они-то поменяли умолчание, оставив выбор для разработчиков дистрибутивов, которые в итоге без анонса отключают DT_HASH для glibc, разрушая совместимость.


(Ответ для Gleb F-Malinovskiy на комментарий #3)
> (In reply to Mikhail Tergoev from comment #2)
> > Судя из: https://bugs.archlinux.org/task/79292
> > 
> > A quick test with a glibc 2.38 build with --hash-style=both does work for me,
> > so just adding that to the LDFLAGS for glibc seems to be enough, no patch
> > needed.
> 
> Патч или не патч это вопрос реализации.  Если бы мы хотели откатить это
> изменение, то откатить указанный Димой коммит было бы самым лучшим решением.
> Но мы не хотим и дело тут не в способе решения.

А какие-то аргументы есть? А видно только «мы хотели» и «мы не хотим».

Чем продолжение поддержки совместимости с DT_HASH ухудшает glibc?
Почему вы считаете, что лучше иметь два glibc в репозитории, чем один с поддержкой DT_HASH?
Считаете ли вы, что АЛЬТ не должен быть игровой платформой?
Считаете ли вы, что случайное появление несовместимостей с проприетарным ПО это хорошо, и не стоит ничего делать для исправления?
Comment 12 Gleb F-Malinovskiy 2023-08-14 13:10:34 MSK
(In reply to Vitaly Lipatov from comment #11)
> (Ответ для Mikhail Tergoev на комментарий #0)
> Конечно, стало известно, что «for EPIC Games EAC, there is already a fix for
> this in EOS SDK 1.15.2 (August 2022) and the corresponding version of the
> anti-cheat module».
> Как я понимаю, это разработчикам всех игр нужно пересобраться с обновлённым
> SDK.
Это вроде было известно -- говорят, что часть игр с EAC прекрасно работает.

> Ну это же просто такой хитрый оборот, всем понятно, что проприетарщики по
> определению ничего не будут актуализировать.
Да, если будет работать, то не будут актуализировать.

> С другой стороны, разработчики glibc считают возможным незаметно выключать
> поддержку DT_HASH без всякого анонса. Точнее, они-то поменяли умолчание,
> оставив выбор для разработчиков дистрибутивов, которые в итоге без анонса
> отключают DT_HASH для glibc, разрушая совместимость.
В ALT gnu hash исользуется начиная с того, как в binutils 2.17.50.0.3-alt1 (Fri Aug 18 2006) появилась поддержка этой фичи и в gcc 4.1.1-alt8 (Sun Oct 01 2006) была реализована безусловная передача --hash-style=gnu линкеру.  Разработчики дистрибутива приняли решение очень давно.  Тот факт, что glibc по своим причинам (которые описаны в комментариях к убранным изменениям) считали нужным поддерживать sysv hash style на это решение никак не влияет.
Comment 13 Vitaly Lipatov 2023-08-15 02:11:14 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #12)
> (In reply to Vitaly Lipatov from comment #11)
> > (Ответ для Mikhail Tergoev на комментарий #0)
> > Конечно, стало известно, что «for EPIC Games EAC, there is already a fix for
> > this in EOS SDK 1.15.2 (August 2022) and the corresponding version of the
> > anti-cheat module».
> > Как я понимаю, это разработчикам всех игр нужно пересобраться с обновлённым
> > SDK.
> Это вроде было известно -- говорят, что часть игр с EAC прекрасно работает.
> 
> > Ну это же просто такой хитрый оборот, всем понятно, что проприетарщики по
> > определению ничего не будут актуализировать.
> Да, если будет работать, то не будут актуализировать.
Боюсь, что они в последнюю очередь будут интересоваться тем, что работает на glibc в ALT.

> > С другой стороны, разработчики glibc считают возможным незаметно выключать
> > поддержку DT_HASH без всякого анонса. Точнее, они-то поменяли умолчание,
> > оставив выбор для разработчиков дистрибутивов, которые в итоге без анонса
> > отключают DT_HASH для glibc, разрушая совместимость.
> В ALT gnu hash исользуется начиная с того, как в binutils 2.17.50.0.3-alt1
> (Fri Aug 18 2006) появилась поддержка этой фичи и в gcc 4.1.1-alt8 (Sun Oct
> 01 2006) была реализована безусловная передача --hash-style=gnu линкеру. 
> Разработчики дистрибутива приняли решение очень давно.  Тот факт, что glibc
> по своим причинам (которые описаны в комментариях к убранным изменениям)
> считали нужным поддерживать sysv hash style на это решение никак не влияет.
Это выглядит так, что все не при делах:
- разработчики glibc говорят «мы меняем умолчание, вы можете у себя выбрать что нужно»
- сопровождающий пакета glibc говорит «мы давно уже выбрали, и изменение в апстриме нас не касается»

Но по факту новая версия пакета ломает определённую функциональность.

Вы скажите просто, почему заботливо не предупредили, что в новой сборке пакета будет радикальное изменение? Ну может забыли или не знали?

Хотя и вопросы в предыдущем комментарии остались без ответа.
Comment 14 Vitaly Lipatov 2023-08-15 12:04:41 MSK
(Ответ для Gleb F-Malinovskiy на комментарий #12)
...
> В ALT gnu hash исользуется начиная с того, как в binutils 2.17.50.0.3-alt1
> (Fri Aug 18 2006) появилась поддержка этой фичи и в gcc 4.1.1-alt8 (Sun Oct
> 01 2006) была реализована безусловная передача --hash-style=gnu линкеру. 
> Разработчики дистрибутива приняли решение очень давно.  Тот факт, что glibc
> по своим причинам (которые описаны в комментариях к убранным изменениям)
> считали нужным поддерживать sysv hash style на это решение никак не влияет.
Не вижу связи между тем, как собираются бинарники (--hash-style=gnu это отличное решение, так сделали все, понятно, что DT_GNU_HASH лучше) и тем ломается ли совместимость в glibc.
О влиянии на решение тоже вопросов не было.

Картина-то другая. В Fedora в обход фриза проносили возвращение DT_HASH в glibc, чтобы в релизе запускались игры, а у нас будут вопросы на много лет, почему игра не запускается. А ответа-то нет.
Если поддержка DT_HASH возвращается двумя строчками
LDFLAGS.so="-Wl,--hash-style=both"
LDFLAGS-rtld="-Wl,--hash-style=both"
при сборке glibc, это вопрос того, будет ли сохраняться совместимость. Зачем рассказывать про binutils?
Comment 15 Gleb F-Malinovskiy 2023-08-15 12:30:57 MSK
(In reply to Vitaly Lipatov from comment #14)
> Зачем рассказывать про binutils?
Ты написал что-то очень странное про умолчания в glibc связанные с выбором hash style, мне пришлось объяснять.  Из твоего следующего ответа я могу сделать вывод, что ты не понял моё объяснение.
Comment 16 Gleb F-Malinovskiy 2023-08-15 12:40:28 MSK
(In reply to Vitaly Lipatov from comment #13)
> Вы скажите просто, почему заботливо не предупредили, что в новой сборке
> пакета будет радикальное изменение? Ну может забыли или не знали?
Странный вопрос.  Забыли, что в EAC делаются такие странные вещи? :)
Нет, конечно не знали.
Comment 17 Repository Robot 2023-09-01 20:04:31 MSK
glibc-6:2.38.0.11.g1aed90c9c8-alt1 -> sisyphus:

 Fri Sep 01 2023 Gleb F-Malinovskiy <glebfm@altlinux> 6:2.38.0.11.g1aed90c9c8-alt1
 - Updated to glibc-2.38-11-g1aed90c9c8.
 - Enabled ELF DT_HASH for shared objects and the dynamic loader (ALT#47150).