-
Notifications
You must be signed in to change notification settings - Fork 86
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
Regression with glibc 2.39 prereleases: fails to find shared libraries after ldconfig #630
Comments
It's meant to have picked up the
First question: is there anything unusual about Normally I would expect that In your log, this doesn't seem right:
... because I would have expected lots of library symlinks in each of those directories inside the container, notably Because you mentioned you're using glibc from git, I wonder whether there has been a behaviour change in ldconfig? |
Another interesting piece of information is that we were able to start a process inside the container:
That early part of the in-container code relies on |
I can confirm that it's definitely an issue with bleeding edge glibc. I got the same issue on Fedora Rawhide after I updated to By the way, how did you disable the runtime? I had to resort to using the Fl*tpak! |
Thanks, that narrows this down. Are you able to find out what glibc commit that version corresponds to? |
Disabling the runtime is not supportable, so I would prefer it not to be something that is copy/pasted around as a recipe by users who have not worked it out for themselves and do not understand its implications. |
|
Nothing in there jumps out at me as a particularly likely root cause. Maybe an unintended regression in @Nanotwerp, does your verbose log look the same as what @gulafaran reported? I'm particularly interested in the part starting from the first mention of |
What seems to be going on here is: Steps to reproduce
Expected result
It should run (These are paths inside the container, it is normal that they don't exist on the host system.) Actual result
After it runs [Tracked as steamrt/tasks#357 internally.] |
lib32-libdl
libdl
and yeah both /usr , /usr/lib and /usr/lib32 are real directories and isnt residing on some multiple partition layout its all one big / "root" mount point. |
Mine seems to be pretty close to @gulafaran's. |
@kisak-valve, please could you retitle this to "regression with glibc 2.39 prereleases: fails to find shared libraries after ldconfig" or something, to narrow down its scope a bit? @Nanotwerp reported that the library that wasn't found is |
Oh, I didn't even see that the missing library was changed! Mine was also libdl.so.2 when I first encountered the error. |
ValveSoftware/steam-for-linux#10209 confirms that |
Yes, this is. I found this commit by bisect. https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2aa0974d2573441bffd596b07bff8698b1f2f18c UPD: It fixed here https://inbox.sourceware.org/libc-alpha/87v8a83f9t.fsf@oldenburg.str.redhat.com/ |
Thanks for locating that! This indicates that it's a bug in the version of ldconfig provided by (some) glibc 2.39 prerelease snapshots, which needs fixing in glibc rather than in the Steam Linux Runtime. The most that the Steam Linux Runtime would be able to do about this would be a workaround. The least-bad workaround I can think of right now would slightly slow down launching all games for all users (because we'd have to add a check in the critical path to make sure ldconfig is not the broken version), and would work around the glibc bug for all Proton games and most (but not all!) native Linux games. I would prefer not to have the unconditional slowdown if we can avoid it - I'm hoping that this will be fixed in glibc soon, so that we can assume that the broken versions basically don't exist. @Nanotwerp: In Fedora, this should have been fixed by glibc-2.38.9000-21.fc40 (I have not yet confirmed this). Please try that version? @gulafaran: I don't know where you got your glibc git snapshots from (https://aur.archlinux.org/packages/glibc-git seems to be outdated and https://gitlab.archlinux.org/archlinux/packaging/packages/glibc doesn't seem to have a branch that is newer than the stable release), but please try applying the patch @NTMan linked above, which is also available at https://sourceware.org/pipermail/libc-alpha/2023-November/152711.html. |
(https://aur.archlinux.org/packages/glibc-git) aur is a bit manual when using arch, the version listed there is simply what the (almost bash build script) version of the commit was when uploading the PKGBUILD there, whenever i run makepkg on it it will fetch glibc directly from git and build master and update PKGVER locally. however that commit is not in the git repo yet https://sourceware.org/git/?p=glibc.git;a=shortlog but it doesnt stop me from applying said patch anyhow when rebuilding it :) and with the patch applied, the games runs again. |
The glibc bug that caused this issue made some systems unbootable, and apparently the Fedora rawhide update that fixed it also introduced an unrelated qsort regression, so I would suggest staying with a stable release of glibc until the dust has settled. Or, if you particularly want to be using the latest unreleased development snapshots of glibc at this early stage in their release cycle (for the adventurous only), sorry but it will be necessary to keep track of regressions like this one and apply workarounds/fixes if necessary. There are limits to what pressure-vessel/Steam Linux Runtime can do to insulate you from regressions in core system components like glibc. |
surely, sometimes running git of things like this catches regressions but it sometimes also catches changes that "downstream" might need to adapt to. this time it was an regression, but il continue my adventurous building and keep reporting :D eventually il catch something that isnt an regression i guess. |
While trying to reproduce this on Fedora (with the broken glibc version) I've found that the same bug can also result in I think that confirms that this is something that needs to be fixed in glibc, and can't usefully be worked around in pressure-vessel. |
For Fedora users, glibc-2.38.9000-22.fc40 should resolve this. |
For AUR or otherwise self-compiled users, the latest glibc git should hopefully resolve this: specifically, today's commit cfb5a97a "ldconfig: Fixes for skipping temporary files" is the one that's needed. |
yep does here, should i close the issue? |
Yes, please close it. I think we can consider this to be resolved now. |
As a follow-up for this: newer versions of the container runtime (since this week's betas with pressure-vessel 0.20231128.0) have some code to help to diagnose issues like this one. When run with |
its been a few weeks/months since i last played games using steam so im not entirerly sure what the reason for the error is, but pretty much any game i try to launch just errors with
and as a temporary "test/workaround" i appended at the top of _v2-entry-point
simply to test run the games without the runtime, and then they launch again.
Your system information
steamapps/common/SteamLinuxRuntime/VERSIONS.txt
? doesnt seem to exist.steamapps/common/SteamLinuxRuntime_soldier/VERSIONS.txt
? doesnt seem to exist.steamapps/common/SteamLinuxRuntime_sniper/VERSIONS.txt
? https://gist.github.com/gulafaran/411fc6f60d546cd5537528709ca0b56bSTEAM_LINUX_RUNTIME_VERBOSE=1 log. where i launch steam, try to run a game and exit steam. error can be seen at line 8164
https://gist.github.com/gulafaran/798a234f287fdb040eee6b1249879569
Steps for reproducing this issue:
Extra
worth mentioning is that i run quite a few -git packages as in glibc and other things it might just be a locally screwed up situation. but thought id make a bugreport and let you with more knowledge take a look.
The text was updated successfully, but these errors were encountered: