ValveSoftware / steam-runtime

A runtime environment for Steam applications
Other
1.17k stars 86 forks source link

Games not launching / low fps caused by _v2-entry-point missing execute permissions #656

Open strtgbb opened 4 months ago

strtgbb commented 4 months ago

Affected Proton versions: All tested (5-8) Affected Games: All but one tested. (The one that launched and ran well was (the) Gnorp Apologue)

Issue: The execution permission is missing on the following file(s) ~/.local/share/Steam/steamapps/common/SteamLinuxRuntime_*/_v2-entry-point

Background: I've been having issues with low FPS (~6) for months, and more recently, games not launching at all. PROTON_LOG=1 wasn't even logging anything. I saw a tip to check Steam Runtime Diagnostics and I saw a permission error on _v2-entry-point. I tried chmod +x on that file, and now my games launch with excellent performance.

I am using EndeavourOS, I don't know if this issue affects other distros.

kisak-valve commented 4 months ago

Hello @strtgbb, _v2-entry-point is part of Pressure Vessel, which is used to setup the Steam Linux Runtime container environment that Proton 5.13 and newer is run inside.

In the common case, this is downloaded from steam with the execute permission enabled. Did you happen to use an unusual method to install Steam Linux Runtime? Maybe with a copy utility from an older install which didn't preserve file permissions in the process?

strtgbb commented 4 months ago

I installed it from the EndeavourOS repos. I have run steam-runtime --reset frequently, it often fixes games that don't launch, but recently it hasn't done so reliably.

strtgbb commented 4 months ago

I just remembered, I did change hard disks about a year ago, which would have involved a file copy. Nothing else got affected like this, and I think the issues started more recently than that as well.

strtgbb commented 4 months ago

I remember moving my steam folder more recently. That must have been the cause of the failed launches.

I think I was already having strange performance issues before that, I don't understand why those have also resolved with changing that permission.

Would it be possible to have a better error message? Instant crash and no logs was frustrating to investigate.

smcv commented 3 months ago

The Steam Linux Runtime cannot provide a better error message for its entry point not being executable, because its entry point is the first time it gets the opportunity to run code. If that's not executable, then no code from the Steam Linux Runtime will run at all - so no matter how much code we might write, it cannot help you.

The Steam client (a higher layer) could potentially provide a better error message (or just silently fix it), but that would have to be a Steam client change, not a Steam Linux Runtime change.

strtgbb commented 3 months ago

What about the steam-runtime --reset command? Does it have the ability to fix or warn about this? Most of my previous issues with Proton have been fixed by running that.

smcv commented 3 months ago

Neither Steam nor the Steam Runtime provides an executable named steam-runtime. If steam-runtime is the Arch-provided wrapper script to run the Steam client as designed, with its built-in copy of the Steam Runtime in use (as opposed to steam-native which Valve specifically does not support), then its options are probably passed on 1:1 to the Steam client. I don't know what --reset does, specifically.

smcv commented 3 months ago

I've been having issues with low FPS (~6) for months

This must have been a separate issue, which has apparently now been resolved by some other change - either something you changed, or an improvement in Steam, games or your OS.

Not having +x permission on _v2-entry-point will not cause low performance: this is a matter of "it works, or it doesn't" rather than something with an incremental performance impact. If it isn't executable, the symptom would be that the game will not launch at all (although I suppose technically that's 0 frames per second, which is indeed very low performance).

PROTON_LOG=1 wasn't even logging anything

If essential Steam Linux Runtime scripts aren't executable, then that is expected. PROTON_LOG doesn't do anything until Proton starts up, but if the Steam Linux Runtime scripts can't run, then we'll never get far enough to be attempting to run Proton.