ValveSoftware / steam-runtime

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

undertale will not run under slr #235

Closed soredake closed 3 years ago

soredake commented 4 years ago

./run.sh: line 3: 23062 Segmentation fault (core dumped) LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH ./runner underale-slr.log

smcv commented 4 years ago

What libraries are there in Undertale's ./lib?

Also, please upload the Help -> System Information report as a gist and drop a link here. You can use the same link for all your issue reports if it's current and the same issue is still happening.

smcv commented 4 years ago

Like #237, it's crashing with a segmentation fault. Either something is wrong in the container environment that pressure-vessel has set up, or the game is making assumptions about your system that aren't true any more in the container.

soredake commented 4 years ago

https://gist.github.com/soredake/ed1fa30f885371dda5f331815920a3ae

soredake commented 4 years ago

What libraries are there in Undertale's ./lib?

only libsteam_api.so

smcv commented 4 years ago

This could be related, and looks like memory corruption:

'Ý^P^Oï^@^@^@^@Ý' is not a recognized processor for this target (ignoring processor)

It's unclear whether this is a game bug, or a library bug, or pressure-vessel not providing all the right things in the container.

smcv commented 4 years ago

Undertale is a GameMaker Studio game, and I think we've had trouble with those in the past.

smcv commented 4 years ago

I think this is a game bug. The Game Maker interpreter was compiled in a newer environment than the Steam Runtime, so it has dependencies on libraries that it normally gets from your host system: this means the stricter container environment won't work. It wouldn't work on old host OSs like Ubuntu 12.04 either.

216 is another Game Maker game with similar issues.

We have some ideas for a less strict container environment where games like this are more likely to work, but that isn't currently available. Until then, Game Maker games won't work in the container.

soredake commented 4 years ago

I moved to ubuntu, now game does not launch at all, with or without slr.

when running from terminal /home/danet/.steam/debian-installation/steamapps/common/Undertale/run.sh: line 3: 123547 Segmentation fault (core dumped) LD_LIBRARY_PATH=./lib:$LD_LIBRARY_PATH ./runner

I lanuched game with slr, then without: undertale.log

soredake commented 4 years ago

After updates game works at least without slr.

smcv commented 3 years ago

We have some ideas for a less strict container environment where games like this are more likely to work

We now have a prototype of this available. If you go into the list of SLR betas and choose the scout_layered_slim branch, you'll get the Steam Runtime v1 'scout' LD_LIBRARY_PATH runtime, running inside the same Steam Runtime v2 'soldier' container that Proton uses.

I don't have Undertale, but I tried this with the demo version of Demetrios (451570) which is another GameMaker title. It segfaults when I use the default or client_beta branch of SLR, but runs successfully when I use scout_layered_slim. So, that's promising! Please try it and see how you get on?

If the scout_layered_slim branch breaks any of your other games, please report that as a separate issue, and make it as obvious as possible that you're using the scout_layered_slim branch.

If this approach is successful, then it will eventually replace the current approach to running native scout games in SLR.

(This is an implementation of https://github.com/ValveSoftware/steam-runtime/blob/master/doc/possible-designs.md#steam-runtime-2-container-with-ld_library_path-runtime-inside from the design document I wrote a while ago.)

smcv commented 3 years ago

Sorry, I should have mentioned: if launching games in scout_layered_slim doesn't work immediately, try exiting from Steam completely, and starting Steam again. Similarly, if you go back from scout_layered_slim to the default or client_beta branch, you might need to exit from Steam and restart it.

smcv commented 3 years ago

The equivalent of scout_layered_slim is now in the client_beta branch too.

smcv commented 3 years ago

We have now shipped the equivalent of scout_layered_slim as the default.

This seems to work OK for me, using SteamLinuxRuntime depot 0.20210630.32, SteamLinuxRuntime_soldier depot 0.20210630.17 and scout runtime 0.20210630.0 (which are all available in stable/general-availability branches). @soredake, please could you retry?

Here's what I used:

$ cat ~/SteamLibrary/steamapps/common/SteamLinuxRuntime/VERSIONS.txt 
#Name   Version     Runtime Runtime_Version Comment
depot   0.20210630.32           # Overall version number
LD_LIBRARY_PATH -   scout   -   # see ~/.steam/root/ubuntu12_32/steam-runtime/version.txt
scripts v0.20210623.0-0-ga389036            # Entry point scripts, etc.
$ cat ~/SteamLibrary/steamapps/common/SteamLinuxRuntime_soldier/VERSIONS.txt
#Name   Version     Runtime Runtime_Version Comment
depot   0.20210630.17           # Overall version number
pressure-vessel 0.20210630.0            
scripts v0.20210623.0-0-ga389036            # Entry point scripts, etc.
soldier 0.20210629.0    soldier 0.20210629.0    # soldier_platform_0.20210629.0/
$ cat ~/.steam/root/ubuntu12_32/steam-runtime/version.txt 
steam-runtime_0.20210630.0
kisak-valve commented 3 years ago

Closing per the last comment.