NixOS / nixpkgs

Nix Packages collection & NixOS
MIT License
18.07k stars 14.13k forks source link

Steam: Proton games don't start anymore #130699

Closed davidak closed 3 years ago

davidak commented 3 years ago

Describe the bug I can't start proton games anymore since some days.

At first it helps to restart steam, but today i have the issue every time.

I haven't done a NixOS update, but there was a Steam update 7 days ago. Maybe that broke something again.

A NixOS update did not fix it.

To Reproduce Steps to reproduce the behavior:

  1. Start Steam
  2. Start a Windows game using Proton
  3. Steam says the game is started and then stopped, you don't see a window or anything

This might be the main error:

pressure-vessel-wrap[3305800]: W: Found more than one possible libdrm data directory from provider
pressure-vessel-wrap[3305800]: W: "/nix/store/m7zbimzdhss9ngi5qaaarsx20n3vd4ww-libdrm-2.4.105/share/libdrm" is unlikely to appear in "/run/host"
bwrap: execvp /usr/lib/pressure-vessel/from-host/bin/pressure-vessel-adverb: No such file or directory

Here is the full log: https://gist.github.com/davidak/72f1632ec5b79cb230df06204774a1e6

Workaround

  1. Search for "Steam Linux Runtime - Soldier" in your Library
  2. Open it's properties
  3. Go to Betas and select "previous_release"

Screenshot from 2021-07-21 05-15-57

Expected behavior Steam games start as before

Additional context

Pantheon Desktop, AMD Radeon RX 480 GPU

Tested games that fail to start:

Tested games that work:

I tested the open Steam PRs, but they don't fix this issue.

https://github.com/NixOS/nixpkgs/pull/130456 https://github.com/NixOS/nixpkgs/pull/126435

Notify maintainers @jagajaga @jonringer

Metadata

Maintainer information:

# a list of nixpkgs attributes affected by the problem
attribute: steam
# a list of nixos modules affected by the problem
module:
jonringer commented 3 years ago

It's most likely a vulkan related issue. There's another issue, but I'm on mobile

MeTheFlea commented 3 years ago

I'm having the same issue, haven't updated NixOS (unstable) in between (but have updated since) so I'm assuming it was a Steam update that broke things with NixOS. Proton 5.13+ does not work anymore.

aanderse commented 3 years ago

@davidak do these games work if you force them to run on an older version of proton? Recently steam updated on a few of my pcs and I had to force the version of proton to something older (4.x IIRC) before any of my kids Lego games would work again. Are you familiar with how to force that?

baracoder commented 3 years ago

If you select Steam Linux Runtime - Soldier -> Betas -> previous_release, it works. I have created this ticket: https://github.com/ValveSoftware/steam-runtime/issues/431

nova-nowiz commented 3 years ago

There is this issue on the subject: https://github.com/NixOS/nixpkgs/issues/127068 It was a mesa + llvm incompatibility. I don't think that is the issue here.

when I start steam from the command line I get the following:

Running Steam on nixos 21.11.20210718.6797b92 64-bit
STEAM_RUNTIME has been set by the user to: /steamrt
Can't find 'steam-runtime-check-requirements', continuing anyway
WARNING: Using default/fallback debugger launch
/home/narice/.local/share/Steam/ubuntu12_32/steam
[2021-07-20 12:48:52] Startup - updater built Jul 16 2021 18:04:56
Installing breakpad exception handler for appid(steam)/version(1626461631)
libGL error: MESA-LOADER: failed to open radeonsi: /run/opengl-driver-32/lib/dri/radeonsi_dri.so: wrong ELF class: ELFCLASS64 (search paths /run/opengl-driver-32/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open radeonsi: /run/opengl-driver-32/lib/dri/radeonsi_dri.so: wrong ELF class: ELFCLASS64 (search paths /run/opengl-driver-32/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open swrast: /run/opengl-driver-32/lib/dri/swrast_dri.so: wrong ELF class: ELFCLASS64 (search paths /run/opengl-driver-32/lib/dri)
libGL error: failed to load driver: swrast
SteamUpdateUI: An X Error occurred
X Error of failed request:  BadValue (integer parameter out of range for operation)
Major opcode of failed request:  152 (GLX)
Minor opcode of failed request:  3 (X_GLXCreateContext)
Value in failed request:  0x0
Serial number of failed request:  47
xerror_handler: X failed, continuing
Looks like steam didn't shutdown cleanly, scheduling immediate update check
[2021-07-20 12:48:52] Loading cached metrics from disk (/home/narice/.local/share/Steam/package/steam_client_metrics.bin)
[2021-07-20 12:48:52] Failed to load cached hosts file (File 'update_hosts_cached.vdf' not found), using defaults
[2021-07-20 12:48:52] Using the following download hosts for Public, Realm steamglobal
[2021-07-20 12:48:52] 1. http://media.steampowered.com, /client/, Realm 'steamglobal', weight was 1, source = 'baked in'
Installing breakpad exception handler for appid(steam)/version(1626461631)
[2021-07-20 12:48:52] Checking for update on startup
[2021-07-20 12:48:52] Checking for available updates...
[2021-07-20 12:48:52] Downloading manifest: http://media.steampowered.com/client/steam_client_ubuntu12
Installing breakpad exception handler for appid(steam)/version(1626461631)
[2021-07-20 12:48:52] Download skipped: /client/steam_client_ubuntu12 version 1626461631, installed version 1626461631, existing pending version 0
[2021-07-20 12:48:52] Nothing to do
[2021-07-20 12:48:52] Verifying installation...
[2021-07-20 12:48:52] Performing checksum verification of executable files
[2021-07-20 12:48:53] Verification complete
Loaded SDL version 2.0.15-6655637
libGL error: MESA-LOADER: failed to open radeonsi: /run/opengl-driver-32/lib/dri/radeonsi_dri.so: wrong ELF class: ELFCLASS64 (search paths /run/opengl-driver-32/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open radeonsi: /run/opengl-driver-32/lib/dri/radeonsi_dri.so: wrong ELF class: ELFCLASS64 (search paths /run/opengl-driver-32/lib/dri)
libGL error: failed to load driver: radeonsi
libGL error: MESA-LOADER: failed to open swrast: /run/opengl-driver-32/lib/dri/swrast_dri.so: wrong ELF class: ELFCLASS64 (search paths /run/opengl-driver-32/lib/dri)
libGL error: failed to load driver: swrast
Steam: An X Error occurred
X Error of failed request:  BadMatch (invalid parameter attributes)
Major opcode of failed request:  152
Serial number of failed request:  49
xerror_handler: X failed, continuing
assert_20210720124852_1.dmp[5663]: Uploading dump (out-of-process)
/tmp/dumps/assert_20210720124852_1.dmp
/home/narice/.local/share/Steam/steam.sh: line 772:  5657 Segmentation fault      (core dumped) $STEAM_DEBUGGER $DEBUGGER_ARGS "$STEAMROOT/$STEAMEXEPATH" "$@"
assert_20210720124852_1.dmp[5663]: Finished uploading minidump (out-of-process): success = yes
assert_20210720124852_1.dmp[5663]: response: CrashID=bp-bc4634a5-9d6f-4e70-a6a1-2eb652210720
assert_20210720124852_1.dmp[5663]: file ''/tmp/dumps/assert_20210720124852_1.dmp'', upload yes: ''CrashID=bp-bc4634a5-9d6f-4e70-a6a1-2eb652210720''

doing a steam --reset and then relaunching steam doesn't work. maybe trying https://github.com/NixOS/nixpkgs/issues/126428 on top of https://github.com/NixOS/nixpkgs/pull/129805 would solve the issue?

nova-nowiz commented 3 years ago

woops, my problem might be a bit more than what you are experiencing here, should I open another issue? (steam doesn't run basically)

davidak commented 3 years ago

should I open another issue?

@Narice yes

do these games work if you force them to run on an older version of proton?

@aanderse yes. proton 5.0 and older works

these proton versions don't work:

these proton versions work:

(i actually tested with different proton versions, but only those that don't work)

Are you familiar with how to force that?

yes, in the game properties

Screenshot from 2021-07-20 20-04-20

If you select Steam Linux Runtime - Soldier -> Betas -> previous_release, it works.

@baracoder yes. that solves the issue for now.

nova-nowiz commented 3 years ago

@davidak done with issue #130861.

Atemu commented 3 years ago

that solves the issue

*works around

Not a fix.

baracoder commented 3 years ago
bwrap: execvp /usr/lib/pressure-vessel/from-host/bin/pressure-vessel-adverb: No such file or directory

is the most suspicious. Is this a missing dependency in the steam-fhs? With commands from https://github.com/NixOS/nixpkgs/issues/100655 I have tried to poke around a bit but didn't get it right yet:

  1. run steam-run bash
  2. run G_MESSAGES_DEBUG=all ~/.local/share/Steam/steamapps/common/SteamLinuxRuntime_soldier/run-in-soldier -- xterm

While the output is similar to lunching a game (without G_MESSAGES_DEBUG=all), I can't get anything to start with any version of the Steam Linux Runtime

nixos-discourse commented 3 years ago

This issue has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/steam-proton-games-broken/14167/3

jonringer commented 3 years ago

pressure-vessel-adverb is usually in your steam home directory. We could probably add the path

viniciusmuller commented 3 years ago

This also happens with Borderlands - The Pre-Sequel.

baracoder commented 3 years ago

pressure-vessel-adverb is usually in your steam home directory. We could probably add the path

I don't think the file itself is missing, but it is instead one of those misleading error messages, that pop up, when a binary can not be executed because a required .so file can not be found.

smcv commented 3 years ago

I don't think the file itself is missing, but it is instead one of those misleading error messages, that pop up, when a binary can not be executed because a required .so file can not be found.

Based on previous pressure-vessel issues, I'm 99% sure you're right. There will be something missing from the library search path in the container created by pressure-vessel, probably for a NixOS-specific reason.

This might be a bug in pressure-vessel or a bug in NixOS' packaging for Steam, we don't have enough information to know which yet. We'll need to see more detailed logs: please see https://github.com/ValveSoftware/steam-runtime/issues/431 for details.

nrdxp commented 3 years ago

Is there any possible world where we could declaratively package the Proton runtime? Or maybe a fork of it, like GloriousEggroll's?

ashkitten commented 3 years ago

it has already been stated that valve does not want and will not support us if we package/distribute the steam soldier runtime ourselves

smcv commented 3 years ago

This might be a bug in pressure-vessel or a bug in NixOS' packaging for Steam, we don't have enough information to know which yet.

It seems to be a pressure-vessel bug. Please use the previous_release on NixOS for now; the next beta release should have a fix.

smcv commented 3 years ago

it has already been stated that valve does not want and will not support us if we package/distribute the steam soldier runtime ourselves

Yes, this. The only supported distribution channel for Steam games, Proton and soldier is Steam's own download mechanism (Steampipe). Similarly, the only supported scout Steam Runtime is the one in ~/.steam/root/ubuntu12_32/steam-runtime.

Part of the purpose of the soldier runtime is that its content and update cadence is under Valve's control, so if a new version of Proton requires adding or upgrading libraries in soldier, Valve can make sure a suitable version of soldier ships first. That wouldn't work if downstream distributions package an older version of soldier that takes an arbitrary amount of time to update - if we tried to support that, then we'd be limited by the speed of the slowest-updating distribution (or, more realistically, we wouldn't know about all the distributions and would continue anyway, and the slower-updating distributions would stop working).

This should not be news to anyone - Steam is a sales and distribution platform for binary blobs with known content. Some of them (like soldier and Proton) happen to be built from open-source software, but their official, supportable version is a specific binary build, and no other build of them is going to be supported.

It's also not currently possible to have a second, parallel version of soldier, even as an unsupportable tweak: Proton 5.13+ encodes its dependency on soldier as a Steampipe app-ID, not as an abstract runtime ABI identifier that could point to a user-configurable implementation, so the only thing it is going to use is the Steam library directory into which an official soldier build is downloaded. (I have to edit that directory in-place when I'm testing new versions of soldier.)

NixOS has an unusual non-FHS layout that breaks many assumptions that would be true on more typical distros, and pressure-vessel needs detailed knowledge of the filesystem layout, so it is likely that pressure-vessel on NixOS will occasionally regress. I try to keep it working, but my resources are limited and I can't run examples of every distribution. If you want to minimize regressions like this for NixOS users, the best way to do that is to use the beta branches of soldier and Steam, and report regressions early, so that we can fix them before they get into the default branch next time (kudos to @baracoder for reporting https://github.com/ValveSoftware/steam-runtime/issues/431 and working with me to get this fixed).

Or maybe a fork of it, like GloriousEggroll's?

GloriousEggroll's Proton fork does not include a soldier fork: it runs on Valve's official binary builds of soldier, the same as Valve's official and experimental Proton builds. I'm hoping that forking soldier will never be necessary.

nrdxp commented 3 years ago

@smcv, thanks for the detailed response. I appreciate it :pray:

robbins commented 3 years ago

I'm trying Rocket League through Proton, and while I do get a window, it's black and closes about 15 seconds after launching. The previous_release workaround for Steam Linux Runtime (Soldier) does not work for me. I'm trying it with Proton 5.0. Should I open a separate issue for this, given that a window does indeed open?

Also, I launched Steam with the right env vars (G_MESSAGES_DEBUG=all STEAM_LINUX_RUNTIME_VERBOSE=1 STEAM_LINUX_RUNTIME_LOG=1 steam) but I'm not getting a log in common/SteamLinuxRuntime_soldier/var, I only got this Steam log: https://pastebin.com/fUwHmwGc.

smcv commented 3 years ago

I'm trying it with Proton 5.0

That's not related to this issue. This issue involves a bug in the pressure-vessel container framework, which is used with Proton 5.13+ but not with 5.0, and the failure mode is different. In this issue, Proton doesn't get run at all; in your issue, Proton runs but the game doesn't work.

Your issue is either a bug in NixOS' Steam packaging, or a bug in Proton 5.0. Please follow Proton's debugging steps (involving PROTON_LOG=1).

STEAM_LINUX_RUNTIME_VERBOSE=1 STEAM_LINUX_RUNTIME_LOG=1

Those environment variables are used by the container framework. Proton 5.0 doesn't use the container framework, so it is normal that you don't get a log from doing this.

smcv commented 3 years ago

This should be fixed in SteamLinuxRuntime_soldier depot 0.20210723.18, currently available in the client_beta branch. The status of today's versions should be:

The 0.20210723.18 build, or a later version, will be committed to the default branch when more people have had a chance to try it and check for regressions.

The fixed version looks like this (or newer):

$ cat ~/SteamLibrary/steamapps/common/SteamLinuxRuntime_soldier/VERSIONS.txt 
#Name   Version     Runtime Runtime_Version Comment
depot   0.20210723.18           # Overall version number
pressure-vessel 0.20210722.0            
scripts v0.20210722.0-0-gb142f90            # Entry point scripts, etc.
soldier 0.20210719.0    soldier 0.20210719.0    # soldier_platform_0.20210719.0/

If you are still getting the error bwrap: execvp .../pressure-vessel-adverb: No such file or directory with a fixed version, please comment on https://github.com/ValveSoftware/steam-runtime/issues/431 with full details.

If you experience different problems with Proton 5.13+, please open a separate issue.

legendofmiracles commented 3 years ago

I can confirm that the client_beta release is working. Rocket League successfully started

yisraeldov commented 3 years ago

I can confirm that the client_beta release is working. Rocket League successfully started

I can also confirm, Mortal Kombat X started with proton 6.3 and I hope to see doom start soon.

Sadly I deleted my steam library in an attempt to fix this.

jtrees commented 3 years ago

Thanks for taking care of this, @smcv.

nixos-discourse commented 3 years ago

This issue has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/how-to-debug-steam-games-crashing/14420/2

felschr commented 3 years ago

I think client_beta is also broken again. I had to switch back to previous_release just now to get it running again.

danwdart commented 3 years ago

I think previous_release is now broken too.

smcv commented 3 years ago

if you believe the Steam Runtime might have regressed, please report a separate bug with full details (including logs and version numbers) to https://github.com/ValveSoftware/steam-runtime/.

https://steamdb.info/app/1391110/depots/ says the default and previous_release branches last changed 20 days ago, and the client_beta last changed 16 days ago, so this seems more likely to be triggered by a change somewhere else.

smcv commented 3 years ago

This should be fixed in SteamLinuxRuntime_soldier depot 0.20210723.18, currently available in the client_beta branch.

soldier depot 0.20210723.18 (Steampipe build ID 7074429) has now been promoted to the default branch.

If you are experiencing similar symptoms with an up-to-date "Steam Linux Runtime - soldier", please open a separate issue with full details, minimally including SteamLinuxRuntime_soldier/VERSIONS.txt and the error messages from the log. Sorry, "it's broken" is not enough information to diagnose a bug or find a solution.

I am not a NixOS user or developer, so I don't know how NixOS developers prefer to manage their issue reports, but I suspect they would also find it easier for regression reports to be a separate issue with full details.

davidak commented 3 years ago

Yes, it works. Thanks again!

nixos-discourse commented 3 years ago

This issue has been mentioned on NixOS Discourse. There might be relevant details there:

https://discourse.nixos.org/t/steam-proton-games-broken/14167/6

spyderdyne commented 1 year ago

To Reproduce Steps to reproduce the behavior:

  1. Install any version of Ubuntu in the past half-decade on a machine with an ATI Radeon 6600 XT, (went all the way back to 21.04 thru 23.04)
  2. Install Steam.
  3. Start Steam.

Reported this on their developer site. AMD hasn't been supporting their hardware for years obviously.

spyderdyne commented 1 year ago

https://askubuntu.com/questions/1482624/is-there-any-reason-to-have-an-amd-gpu-with-ubuntu

buckley310 commented 1 year ago

To Reproduce Steps to reproduce the behavior:

1. Install any version of Ubuntu in the past half-decade on a machine with an ATI Radeon 6600 XT, (went all the way back to 21.04 thru 23.04)

2. Install Steam.

3. Start Steam.

Reported this on their developer site. AMD hasn't been supporting their hardware for years obviously.

This thread is not the most productive place to ask.