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

Steam runtime libcurl-gnutls.so requires version info not found in system libs #6224

Open
matthew-cline opened this issue Apr 19, 2019 · 15 comments

Comments

@matthew-cline
Copy link

matthew-cline commented Apr 19, 2019

My system information

  • Steam client version: April 16 2019, 21:10:43
  • Distribution: Fedora 29
  • Opted into Steam client beta?: Yes
  • Have you checked for system updates?: Yes

Issue details:

When trying to run the game Forager the game window only stays up for a fraction of a second before the game stops running. The problem seems to be that because of linking errors from the 64 bit Steam runtime version (Steam/ubuntu12_32/steam-runtime/amd64/usr/lib/x86_64-linux-gnu) of libcurl-gnutls.so:

$ ldd -r libcurl-gnutls.so.4.2.0

./libcurl-gnutls.so.4.2.0: /lib64/libldap_r-2.4.so.2: no version information available (required by ./libcurl-gnutls.so.4.2.0)
./libcurl-gnutls.so.4.2.0: /lib64/liblber-2.4.so.2: no version information available (required by ./libcurl-gnutls.so.4.2.0)

I was able to fix the problem by overwriting the Steam runtime copy of libcurl-gnutls.so.4.2.0 with my systems copy of /lib64/libcurl.so.4.5.0

Steps for reproducing this issue:

  1. Install and run Forager on Fedora.
@kisak-valve
Copy link
Member

Hello @matthew-cline, these messages are generally harmless. Is there a functional issue you're encountering with this game?

@kisak-valve kisak-valve assigned ghost Apr 20, 2019
@matthew-cline
Copy link
Author

matthew-cline commented Apr 20, 2019

@kisak-valve Sorry, I left out that this prevents the game from running (game window only stays open for an instant), and the game runs perfectly fine once I replace the runtime library with the system library. I didn't include that in the description because I thought linking errors always prevented the game from running.

I've updated the issue description to include that it prevents the game from running.

@smcv
Copy link
Contributor

smcv commented Apr 23, 2019

Presumably libldap and liblber have Debian-specific versioned symbols that weren't adopted upstream. libcurl-gnutls is itself Debian-specific (it's libcurl, adapted to use GNUTLS instead of OpenSSL for legal reasons) so it's unsurprising that you don't have a system copy on a non-Debian-derived host OS.

Possible solutions include:

  • Force libldap and liblber to be taken from the Steam Runtime, even if the system copy appears newer
  • Modify libcurl in the Steam Runtime to remove LDAP support, which I'm fairly sure no game will ever make use of

It's also possible that the linking warnings are not the real problem, and some other bug involving libcurl is preventing the game from running.

@smcv
Copy link
Contributor

smcv commented Apr 23, 2019

If you put back the Steam Runtime copy of libcurl-gnutls.so.4.2.0 (unpack it from steam-runtime.tar.xz), and create symlinks libldap_r-2.4.so.2 and liblber-2.4.so.2 in Steam/ubuntu12_32/steam-runtime/pinned_libs_64 like this:

cd /path/to/Steam/ubuntu12_32/steam-runtime/pinned_libs_64
ln -fns ../amd64/usr/lib/x86_64-linux-gnu/libldap_r-2.4.so.2 .
ln -fns ../amd64/usr/lib/x86_64-linux-gnu/liblber-2.4.so.2 .

does that fix Forager?

@matthew-cline
Copy link
Author

That did not fix them problem, but it no longer complains about the lacking version info, so I guess that wasn't the problem. Here is the gist of Steam's output once I launch Forager.

@smcv
Copy link
Contributor

smcv commented Apr 24, 2019

Looks like there is some other crash not related to the versioned symbols.

You seem to be using the unofficial Flatpak package for Steam, not running it directly on the Fedora 29 host system. Is that correct? (If so, the game will be seeing the libraries from org.freedesktop.Platform, not from Fedora.)

@matthew-cline
Copy link
Author

Forager won't run under Flatpak, so I have to launch it via the RPM Fusion package, which re-pins stuff if the previous run of Steam was under Flatpak.

@tacticalgoose
Copy link

Forager won't run under Flatpak, so I have to launch it via the RPM Fusion package, which re-pins stuff if the previous run of Steam was under Flatpak.

does this make the game work on Flatpak, if so how does one launch it with RPM Fusion package?

@TTimo
Copy link
Collaborator

TTimo commented Apr 25, 2019

We did a bit of investigation on our end, and it appears that the Forager binary needs a libcurl-gnutls.so.4 library that is not compatible with the one provided in the steam runtime (the libcurl-gnutls package in Arch will work, for instance)

At this time we are not pinning libcurl-gnutls.so.4 to the version in the steam runtime, but we may have to since it's clear there are ABI-incompatible versions of it floating out there. Unfortunately that would make the problem with Forager worse and require a game specific workaround.

This is likely happening because the Forager binary was not compiled against the steam runtime. My understanding is that it's a GameMaker title so maybe it's a more general GameMaker issue. To be continued..

@matthew-cline
Copy link
Author

@tacticalgoose Sorry, I didn't mean that the RPM Fusion package makes it work within Flatpak. What I mean is that I've set up enough symbolic links so that I can run the Steam launcher as a normal non-containerized process (which is where the RPM Fusion package comes in) and run it in a Flatpak container. So far I've been unable to figure out how to get Forager to work within Flatpak.

@nanonyme
Copy link

nanonyme commented Oct 3, 2019

@TTimo in context of Flathub Flatpak app, please keep me in the loop if we have library conflicts. There's now a system in place that allows us to tweak on game level which libraries to prevent from loading but we need informed decision on what to do and some paths to use as anchors.

@TTimo
Copy link
Collaborator

TTimo commented Oct 3, 2019

@nanonyme can you reach out to me directly via PM or email? (@TTimo on twitter - I added you)

@goertzenator
Copy link

This is happening with the Arma Reforger dedicated server under NixOS. It fails with the error...

$ steam-run ./ArmaReforgerServer -listScenarios
./ArmaReforgerServer: /steamrt/amd64/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by ./ArmaReforgerServer)

The command steam-run sets up the Steam runtime which is coming from https://repo.steampowered.com/steamrt-images-scout/snapshots/0.20211102.0/steam-runtime.tar.xz . I recognize this is not the newest one, but both this one and the newest one present libcurls with the symbol CURL_OPENSSL_3.

A comment above suggests that these problems are caused by not being compiled against the steam runtime. I suspect that is true here and is something the makers of ArmaReforgerServer ought to fix.

To reproduce this under Nix/NixOS:

mkdir reforger
cd reforger
nix-shell -p steamcmd steam-run
steamcmd +force_install_dir /home/yourhomedir/reforger +login anonymous anonymous +app_update 1874900 +quit
steam-run ./ArmaReforgerServer -listScenarios

@nanonyme
Copy link

nanonyme commented May 22, 2022

@goertzenator note original problem was not about libcurl but libcurl-gnutls. Curl can be built against various crypto implementations and typically it is these days built against OpenSSL. This game expects a libcurl that is built against GnuTLS. If you're super-lucky, the curl's may be interchangeable but in general you should assume they're not.

@smcv
Copy link
Contributor

smcv commented May 23, 2022

./ArmaReforgerServer: /steamrt/amd64/usr/lib/x86_64-linux-gnu/libcurl.so.4: version `CURL_OPENSSL_4' not found (required by ./ArmaReforgerServer)

@goertzenator: As @nanonyme said, this is not the same problem as the one that was originally reported here. Please open a separate issue in https://github.com/ValveSoftware/steam-runtime for the ArmaReforgerServer issue, to avoid mixing it up with this one.

This is probably something that the Arma developers should be solving, but it's probably also possible to find a workaround.

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

No branches or pull requests

7 participants