Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GLIBC update broke EAC for most games that use it #6051

Open
Jelgnum opened this issue Aug 3, 2022 · 223 comments
Open

GLIBC update broke EAC for most games that use it #6051

Jelgnum opened this issue Aug 3, 2022 · 223 comments

Comments

@Jelgnum
Copy link

Jelgnum commented Aug 3, 2022

Titles With Problems:
Most titles that use Easy AntiCheat and officially support Linux
tested ( Multiversus, Elden Ring, Apex Legends [mixed results])

Error Description:

Launch Error: Failed to load the anti-cheat module

image
image

To recreate:
Be running the newest GLIBC in this case 2.36
Have Steam (not flatpak vers.)
Hardware: happens on both nvidia and amd systems

  1. Install one of games mentioned above
  2. launch game
  3. game will most likely error

Sorry if this isn't the correct place to report the error, but I figured this team helped create the EAC module, so you would be the ones to contact.

@xpander69
Copy link

xpander69 commented Aug 3, 2022

Yeah Confirming. Bloodhunt EAC breaks with glibc 2.36
03082022_14 16 21

Apex Legends is still fine. Apex using the older non-EOS EAC i guess?

@Curve Curve mentioned this issue Aug 3, 2022
2 tasks
@amoldybuffalo
Copy link

Just happened to me.

@bg2908
Copy link

bg2908 commented Aug 3, 2022

Happen to me with Elden Ring

@nicodemus144
Copy link

can confirm, also for Video Horror Society.

@perru
Copy link

perru commented Aug 3, 2022

Confirmed on Multiversus.

Try it at workaround :
pacman -U https://archive.archlinux.org/packages/g/glibc/glibc-2.35-6-x86_64.pkg.tar.zst https://archive.archlinux.org/packages/l/lib32-glibc/lib32-glibc-2.35-6-x86_64.pkg.tar.zst

EDIT : Nop, don't try it, it broke my system wich need glibc 2.36...

@amoldybuffalo
Copy link

Little bit of a workaround: use steam flatpak until the issue gets fixed.

@Mast3rwaf1z
Copy link

Mast3rwaf1z commented Aug 3, 2022

also broken for me with elden ring

Edit: as expected, a workaround is to use the flatpak steam version, you can just add your steam library as a filesystem and skip having to install the games again

@Etaash-mathamsetty
Copy link

I was having problems with glibc 2.35 and rogue company
can confirm other EAC games broke with 2.36 now

@seafer6969
Copy link

seafer6969 commented Aug 3, 2022

Confirmed for GNU libc 2.36 on Arch Linux 5.18.15-arch1-2 on the following games:
Multiversus
Dragonball FighterZ

@pioliX000
Copy link

Confirmed on Multiversus.

Try it at workaround : pacman -U https://archive.archlinux.org/packages/g/glibc/glibc-2.35-6-x86_64.pkg.tar.zst https://archive.archlinux.org/packages/l/lib32-glibc/lib32-glibc-2.35-6-x86_64.pkg.tar.zst

EDIT : Nop, don't try it, it broke my system wich need glibc 2.36...

Yea same lmao, thankfully easily fixable by updating with pacman on a live usb inside chroot

@1MasterD1
Copy link

Can Confirm, on Arch Linux. Played a few games in the morning (on Multiversus), ran a pacman update, came back to this issue

@zeroedout
Copy link

zeroedout commented Aug 3, 2022

You can safely(ish) downgrade glibc with the "downgrade" utility on the AUR. Just make sure to include lib32 and gcc-libs. I forgot GCC-libs and had to downgrade from the command line.

sudo downgrade glibc lib32-glibc gcc-libs

Multiversus is able to start successfully after the downgrade.

@ErikReider
Copy link

Experienced the same issue. The steam flatpak works so I'll maybe switch to that indefinitely when i get gamemode working

@1MasterD1
Copy link

1MasterD1 commented Aug 3, 2022

You can safely(ish) downgrade glibc with the "downgrade" utility on the AUR. Just make sure to include lib32 and gcc-libs. I forgot GCC-libs and had to downgrade from the command line.
sudo downgrade glibc lib32-glibc gcc-libs
Multiversus is able to start successfully after the downgrade.

Thank you! I was midtype of reverting it but you made it much much easier. Whenever I try downgrading though, it borks my system (I get faced with a stuck "/dev/sda: clean" bootup screen, reverting downgrade fixes this). Specifically, I think its the gcc-libs breaking dependency with gcc-libs=12.1.1-4. I'll mess around a bit more, but thanks!

Edit: After downgrading gcc as well, it has no error message about dependencies, but won't boot up multiversus nor steam, weirdly

@perru
Copy link

perru commented Aug 3, 2022

You can safely(ish) downgrade glibc with the "downgrade" utility on the AUR. Just make sure to include lib32 and gcc-libs. I forgot GCC-libs and had to downgrade from the command line.

sudo downgrade glibc lib32-glibc gcc-libs

Multiversus is able to start successfully after the downgrade.

Did it with :
sudo downgrade glibc lib32-glibc gcc-libs lib32-gcc-libs gcc

gcc 12.1.0
gcc-libs 12.1.0
glibc 2.35
lib32-gcc-libs 12.1.0
lib32-glibc 2.35

Thank you

If you won't install downgrade, you can do :
pacman -U https://archive.archlinux.org/packages/g/glibc/glibc-2.35-6-x86_64.pkg.tar.zst https://archive.archlinux.org/packages/l/lib32-glibc/lib32-glibc-2.35-6-x86_64.pkg.tar.zst https://archive.archlinux.org/packages/l/lib32-gcc-libs/lib32-gcc-libs-12.1.0-3-x86_64.pkg.tar.zst https://archive.archlinux.org/packages/g/gcc-libs/gcc-libs-12.1.0-3-x86_64.pkg.tar.zst https://archive.archlinux.org/packages/g/gcc/gcc-12.1.0-3-x86_64.pkg.tar.zst

@1MasterD1
Copy link

1MasterD1 commented Aug 3, 2022

Thank you!

sudo downgrade glibc lib32-glibc gcc-libs lib32-gcc-libs gcc
gcc 12.1.0
gcc-libs 12.1.0
glibc 2.35
lib32-gcc-libs 12.1.0
lib32-glibc 2.35

That fixed it no problem!

@GloriousEggroll
Copy link
Contributor

GloriousEggroll commented Aug 4, 2022

I wish someone would take the time to bisect rather than downgrade and forget. This needs a bisect in order to get it fixed properly. I performed the bisect on the Rogue Company issue. Fortunately Fedora is not on glibc 2.36 yet, and I also just don't have the time

@Etaash-mathamsetty
Copy link

Etaash-mathamsetty commented Aug 4, 2022

I wish someone would take the time to bisect rather than downgrade and forget. This needs a bisect in order to get it fixed properly. I performed the bisect on the Rogue Company issue. Fortunately Fedora is not on glibc 2.36 yet, and I also just don't have the time

how would I do the bisect without messing up my system? would I use a vm or distrobox or something? and how would I easily test it, since it would take forever to test each commit

@Jelgnum
Copy link
Author

Jelgnum commented Aug 4, 2022

I wish someone would take the time to bisect rather than downgrade and forget. This needs a bisect in order to get it fixed properly. I performed the bisect on the Rogue Company issue. Fortunately Fedora is not on glibc 2.36 yet, and I also just don't have the time

Like Etaash I would like to know how would one go about doing this.

@Jelgnum Jelgnum closed this as completed Aug 4, 2022
@Jelgnum Jelgnum reopened this Aug 4, 2022
@Jelgnum
Copy link
Author

Jelgnum commented Aug 4, 2022

Sorry about that, clicked "close with comment" instead of "comment" when posting my reply

@xpander69
Copy link

xpander69 commented Aug 4, 2022

bisecting this seems kinda impossible without potentially breaking the system. I downgraded by using downgrade tool for now and everything works again.

[2022-08-03T14:39:42+0300] [ALPM] downgraded glibc (2.36-1 -> 2.35-6)
[2022-08-03T14:39:43+0300] [ALPM] downgraded lib32-glibc (2.36-1 -> 2.35-6)
[2022-08-03T14:42:11+0300] [ALPM] downgraded gcc-libs (12.1.1-4 -> 12.1.0-3)
[2022-08-03T14:42:11+0300] [ALPM] downgraded binutils (2.38-7 -> 2.38-6)
[2022-08-03T14:42:12+0300] [ALPM] downgraded gcc (12.1.1-4 -> 12.1.0-3)
[2022-08-03T14:42:12+0300] [ALPM] downgraded gcc-fortran (12.1.1-4 -> 12.1.0-3)
[2022-08-03T14:42:12+0300] [ALPM] downgraded gcc-objc (12.1.1-4 -> 12.1.0-3)
[2022-08-03T14:42:12+0300] [ALPM] downgraded lib32-gcc-libs (12.1.1-4 -> 12.1.0-3)
[2022-08-03T14:42:12+0300] [ALPM] transaction completed

But its just delaying the issues. had to also downgrade thunderbird for example as its latest version already requires glibc 2.36

This also may break the system at some point if more things starting to require updated glibc

NOTE! Do not do it unless you know what you are doing! This may break your entire system if you keep updating other system packages while some are rolled back and locked to older versions!

@zeroedout
Copy link

I wish someone would take the time to bisect rather than downgrade and forget. This needs a bisect in order to get it fixed properly. I performed the bisect on the Rogue Company issue. Fortunately Fedora is not on glibc 2.36 yet, and I also just don't have the time

Compiling glibc and the corresponding packages takes over a couple of hours on my potato. It would take quite a few days for me to just compile packages from every commit. I would think Proton devs would have the resources to bisect much quicker, I mean Valve is going to need it working for Steam Deck updates.

Would it be worth it to file a bug report on the glibc tracker without bisecting first? I don't see one on there yet. I imagine they would say it's an EAC problem but I guess we would know more once we figure which commit b0rked it.

@VannTen
Copy link

VannTen commented Aug 4, 2022

Is the breakage reproducible using LD_LIBRARY_PATH without downgrading glibc system-wide ?

@thaewrapt
Copy link

thaewrapt commented Aug 4, 2022

I've seen a Proton EAC Runtime update lately, did it fix anything for anybody?

EDIT: nevermind, SteamDB shows only dll changes for yesterday's update, don't think it has anything to do with GLIBC compatibility: https://steamdb.info/depot/1826331/history/?changeid=M:7482036680883698310

@Saancreed
Copy link
Contributor

@thaewrapt Yeah, that update to Proton EAC Runtime is supposed to fix EAC in Vermintide 2, not glibc–related issues with EOS EAC.

@Newbytee
Copy link
Contributor

Newbytee commented Aug 4, 2022

Would it be worth it to file a bug report on the glibc tracker without bisecting first? I don't see one on there yet. I imagine they would say it's an EAC problem but I guess we would know more once we figure which commit b0rked it.

My understanding is that glibc is supposed to have a stable API and ABI, so I think this per definition is a glibc issue. Unless EAC is using private API, of course.

@leshow
Copy link

leshow commented Aug 4, 2022

downgrading glibc can break lots of stuff, so be careful. My terminal emulator kitty for example refused to work with 2.35

Ma27 added a commit to NixOS/nixpkgs that referenced this issue Sep 2, 2023
Announcement: https://sourceware.org/pipermail/libc-alpha/2023-July/150524.html

So far this looks surprisingly good, I managed to build the stdenv
on `aarch64-linux` and got up to building `zfs` and `nix` on `x86_64-linux`.

The patchset is still empty because the latest commit on the release branch is
the one the 2.38 tag points to. I added an empty file though to keep
things consistent.

Also applied the new version of the DT_HASH fix from ArchLinux[1]. This
one's a way easier version than before because it doesn't contain the
autoconf changes, but only hardcodes the desired ld flags. It was
already confirmed that this patch is sufficient to fix the underlying
problem[2].

[1] https://gitlab.archlinux.org/archlinux/packaging/packages/glibc/-/commit/e54d98e2d1aae4930ecad9404ef12234922d9dfd#7b1bfda0391ff4c2662e04a5e193c37e233a0738
[2] ValveSoftware/Proton#6051 (comment)
Ma27 added a commit to NixOS/nixpkgs that referenced this issue Sep 24, 2023
Announcement: https://sourceware.org/pipermail/libc-alpha/2023-July/150524.html

So far this looks surprisingly good, I managed to build the stdenv
on `aarch64-linux` and got up to building `zfs` and `nix` on `x86_64-linux`.

The patchset is still empty because the latest commit on the release branch is
the one the 2.38 tag points to. I added an empty file though to keep
things consistent.

Also applied the new version of the DT_HASH fix from ArchLinux[1]. This
one's a way easier version than before because it doesn't contain the
autoconf changes, but only hardcodes the desired ld flags. It was
already confirmed that this patch is sufficient to fix the underlying
problem[2].

[1] https://gitlab.archlinux.org/archlinux/packaging/packages/glibc/-/commit/e54d98e2d1aae4930ecad9404ef12234922d9dfd#7b1bfda0391ff4c2662e04a5e193c37e233a0738
[2] ValveSoftware/Proton#6051 (comment)
@Tx-Charlie
Copy link

Tx-Charlie commented Feb 1, 2024

got same issue after update glibc to 2.38

@TheMelbine
Copy link

got same issue after update glibc to 2.38

  • Env: Archlinux
  • Game which failed to load EAC: Squad

Did you find a way to fix it? I just tried to run Squad and had the same problem!

Archlinux

@AliceGrey
Copy link

Just tested this with 2.39 and it has the same issue as 2.38 on Arch Linux

@GenocideStomper
Copy link

This is probably the commit in question: https://gitlab.archlinux.org/archlinux/packaging/packages/glibc/-/commit/83899c6e216ef04a56f16faaa19fcbf84bd0f799

@AliceGrey
Copy link

AliceGrey commented Feb 4, 2024

This is probably the commit in question: https://gitlab.archlinux.org/archlinux/packaging/packages/glibc/-/commit/83899c6e216ef04a56f16faaa19fcbf84bd0f799

@freswa I can confirm that Insurgency: Sandstorm is not patched and is affected by this issue still.

@TheMelbine
Copy link

I ran steam through flatpak and it works for me

@PickMeNow
Copy link

Also Back 4 Blood is not patched either, issue still happens

@GenocideStomper
Copy link

Seems like unfortunately the maintainer won't entertain the idea of patching glibc anymore: https://gitlab.archlinux.org/archlinux/packaging/packages/glibc/-/issues/3

So looks like people would have to report the issue to the devs of Back 4 Blood, Insurgency: Sandstorm and Squad. Not sure if the devs of the first 2 titles are still around.

It would be great to maybe have a fork on the AUR that has DT_HASH support; I couldn't find one.

@xiota
Copy link

xiota commented Feb 6, 2024

@GenocideStomper

For binary: https://github.com/Frogging-Family/glibc-eac

To build from source, add -Wl,--hash-style=both to LDFLAGS in makepkg.conf, then build from https://gitlab.archlinux.org/archlinux/packaging/packages/glibc

@Yasand123
Copy link

"If it's a bug that people rely on, it's not a bug, it's a feature." -- Linus Torvalds

@MacTavishAO
Copy link

Here's an AUR repo for those looking for it: https://aur.archlinux.org/packages/glibc-eac
Tested with Insurgency: Sandstorm

@C0rn3j
Copy link

C0rn3j commented Feb 8, 2024

Remaining affected games at the time of writing:

Writeup explaining why this happens (heavily technical)

Solutions
A) Use Flatpak - [Recommended] - EDIT[2024-11-02]: Looks like even Flatpak now dropped the extra patch, go nag the developers and publishers of the remaining two games.
B) Patch system glibc - not advisable, but possible, see comments above
C) Wait for the Publisher to decide to update their EAC build - They've had almost 2 years to do so at this point

Flatpak
In the case of Linux distributions (and Windows too), there is no inherent application sandboxing.
So both from a security1 and a convenience standpoint, running Steam in Flatpak (in a Wayland session)2 is the best3 option.

Flatpak's glibc still carries the extra patch for DT_HASH, and is overall a better solution than trying to patch system libraries to be able to run out of date versions of EAC for one or two games.

See historical examples with CoD RCEs, Souls games RCEs, RCEs directly in the Steam client which compromised the entire system by sending a single message, and other fun exploits, to see why lack of any sandboxing is a problem you might want to care about.
It is especially problematic in online games.

Were you to be affected by an RCE under the above-suggested setup, worst thing that would get compromised4 is all the files Steam has access to, instead of all the files you have access to on your entire operating system across all of your storage drives.

There is a small setup caveat on Nvidia5.

Fixing this upstream
Out of the above mentioned, only Back 4 Blood is an abandoned game (last update more than a year ago), rest is actively updated in the Steam depots.
If you are affected, open the linked Steam page, locate the contact information in the Support section, and let the Publisher and Developer companies know they need to update their game to keep it playable. Include a link to this thread.
They must already know, but they likely need to have enough people affected by it before they can assign developer time to the issue.
If you're going to do this, be nice and civil, there's a person on the other side.

Disclaimer
It is not my intention to start a "Flatpak vs Native" or a "Wayland vs X" flamewar, so if you've read this and got the idea to start arguing how Wayland/Flatpak is terrible because the software/hardware you use doesn't support it, or how you can't afford to spare extra storage/performance for Flatpak, you can safely skip responding to this post, it is only aimed at providing information about security and the current state of things.

Footnotes

  1. Flatpak isn't an inherently secure sandbox, it depends on the application's Flatpak manifest.
    The manifest for Steam is doing a decent job, provided the OS' GUI session is not using Xorg.

  2. X is inherently insecure, so attempting to sandbox Steam with Flatpak, even though it will work and the added sandboxing is better than nothing, it will fail to produce a secure environment. On top of that, there are multiple security issues found relatively frequently that affect both X and XWayland (Wayland compat with X layer).
    WINE is focused on adding support for Wayland, so it will hopefully be possible to get rid of XWayland in the future for all Windows games on a Wayland setup.

  3. Flatpak has a cost in terms of storage taken, and the seccomp filter it uses for sandboxing might have a small performance cost, depending on the game, see this issue.

  4. Assuming no other additional sandbox-escape exploit 0-days.

  5. On Nvidia, Flatpak requires an Nvidia driver matching the system driver. flatpak update should install the correct one for your system without further prompting.
    It needs to be ran every time after updating to a newer Nvidia driver version(on the following reboot) and restarting the Steam app if it were running already using the wrong version, otherwise the performance will be terrible and games either won't launch at all or with terrible performance.

@In-line
Copy link

In-line commented Feb 16, 2024

Solutions A) Use Flatpak - [Recommended] B) Patch system glibc - not advisable, but possible, see comments above C)

Flatpak has heavy performance penalty and isn't ideal for gaming for several reasons. It is broken for now, for several different reasons. Citing security considerations, without advertising it's flaws, is a disservice to the users, who may stumble upon them.

Flatpak should only be recommended, when users are aware that it will break their games and lower their framerate

  1. Performance impact of seccomp filter in games flatpak/flatpak#4187
  2. AppImage-packed games won't run flathub/com.valvesoftware.Steam#770

On the matter of packagers decision to break EAC for Squad and several other games, citing original ticket https://sourceware.org/bugzilla/show_bug.cgi?id=29456

I'm marking this issue as RESOLVED WONTFIX, because the glibc build will include both hashes if that's how the distribution builds the ELF . It is up to the distributions to decide how to proceed with the availability of the hashes. There is no intent to fix this in glibc by forcing both hashes.

> It is up to the distributions to decide how to proceed with the availability of the hashes

While decision to break binary compatability on the GLIBC side is undoubtedly very stupid and their desire to fragment Linux distributions isn't ideal too and all the blame for this mess is on them, but.

There is no additional maintenance cost on the packaging side to maintain one additional flag.
Honestly, I don't see any justifications on reverting that patch, it's the recommended approach to fix this problem, by the people who created it (glibc developers).

@Erick555
Copy link

Erick555 commented Mar 13, 2024

Flatpak's glibc still carries the extra patch for DT_HASH, and is overall a better solution than trying to patch system libraries to be able to run out of date versions of EAC for one or two games.

Flatpak's glibc doesn't and never carried such patch. In 2022 flatpak's glibc was just older than version that broke EAC. For past half year flatpak's glibc version is new enough to be affected. If people didn't notice then maybe the issue is gone?

@Salvodif
Copy link

st half year flatpak's glibc version is new enough to be affected. If people didn't notice then maybe the iss

I still have the issue but I've glibc 2.39+r52+gf8e4623421-1

@Salvodif
Copy link

ming. Bloodhunt EAC breaks with glibc 2.36

I'm so sad!

@kodatarule
Copy link

I have opened a steam discussion on insurgency sandstorm as I saw the devs themselves respond there, letting them know that they need to update their EAC.
This was a huge shame, they release a new update for the game you would expect for the EAC to be updated, but no unfortunately it isn't.
https://steamcommunity.com/app/581320/discussions/0/4354498956230747468/

@In-line
Copy link

In-line commented Jun 20, 2024

https://www.reddit.com/r/linux_gaming/s/SHEKOSRRLo

Can confirm, that Squad devs indeed fixed their issue

@C0rn3j
Copy link

C0rn3j commented Aug 27, 2024

Someone just pinged me that Brawlhalla works, at least on proton experimental, and tracking down the patches, it seems they silently updated the EAC installer back in 2024 March, updated my post above.

This makes Insurgency: Sandstorm win the award of shame as it seems to be the last game that's broken.

@In-line
Copy link

In-line commented Aug 27, 2024 via email

@C0rn3j
Copy link

C0rn3j commented Sep 12, 2024

Award of shame also goes to Squad 44

Oh, that was not on my original list, looks like last EasyAntiCheat_Setup.exe update is from 2019, so that'd probably do it, did you contact the developer about it?

@mercifulboss
Copy link

Maybe it's the method I've installed those packages: pacman -Qi glibc gives the output: Packager : Frederik Schwan <freswa@archlinux.org> Build Date : Sun Jul 31 13:47:41 2022 Install Date : Sat Aug 6 07:48:41 2022 Install Reason : Explicitly installed Install Script : Yes Validated By : Signature The build date seems wrong?

seems like you haven't actually installed the custom glibc and are still using the original arch linux one or maybe something else went wrong

How do I even replace the system glibc with the patched one? Installing with yay or building manually causes a conflict and removing glibc to install the patch breaks the system forcing me to pacstrap it again

@C0rn3j
Copy link

C0rn3j commented Nov 2, 2024

Replying to #6051 (comment)

pkgctl clone official repo glibc, add the patch to the PKGBUILD yourself, do not change the pkgrel, build it, install it.

That way, when Arch updates glibc, your glibc will be correctly overwritten and your patch gone, until you update the pkgbuild against upstream and rebuild again, but at least it won't break your entire system every time.

Don't forget to message the developer and publisher everywhere you can before you do this, so they actually update their EAC build in the game.

@Freso
Copy link

Freso commented Nov 11, 2024

I’m having an issue with Dead by Daylight and EAC, but I’m not seeing anyone else here mention DbD. Anyone know if DbD is using an old EAC too (or how I can find out) before I write them about it?

@C0rn3j
Copy link

C0rn3j commented Nov 11, 2024 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests