ValveSoftware / steam-runtime

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

Pressure Vessel (pressure-vessel-launcher) keeps running after completely closing out of Steam #373

Closed ipkpjersi closed 3 years ago

ipkpjersi commented 3 years ago

Your system information

Please describe your issue in as much detail as possible:

When launching Old School RuneScape with launch options "/home/user/Desktop/games/runelite.sh" %command% , when closing out of the game and even closing out of steam, pressure-vessel-launcher keeps running.

When launching the game via Steam, it looks like this: https://gist.github.com/ipkpjersi/215e67abe7bccc8435607aa0b57a894b

After closing out of the game and Steam, it looks like this: https://gist.github.com/ipkpjersi/8d8d27707568aa575894c0fbf10d5b7c

Here is my runelite.sh, it's really nothing special:

#!/bin/bash
~/Desktop/games/RuneLite.AppImage --mode=OFF

Steps for reproducing this issue:

  1. Download Old School RuneScape from Steam and change the launch options to "/home/user/Desktop/games/runelite.sh" %command% or wherever your RuneLite install is
  2. Launch Old School RuneScape from Steam
  3. Close out of Old School RuneScape (really, RuneLite)
  4. Close out of Steam
  5. You will notice in your Discord game activity that pressure-vessel-launcher is still running and you will notice pressure vessel is still running via ps aux | grep pressure, even though Steam is not running.

In order to workaround this issue, I have to killall pressure-vessel-launcher after running the game.

edit: I have found a better workaround, I have added killall pressure-vessel-launcher to the bottom of my runelite.sh script so that pressure vessel is automatically closed. However, this issue still might be worth looking into as it looks like there may be a potential resource/memory leak here with Pressure Vessel not automatically being closed.

smcv commented 3 years ago

Download Old School RuneScape from Steam and change the launch options to "/home/user/Desktop/games/runelite.sh" %command% or wherever your RuneLite install is

Modifying a Steam game so it runs some entirely different game instead is not really something that we can support: the number of possible things that could go wrong with that is endless. I realise Old School Runescape and RuneLite are probably clients for the same network service, but from the Steam Runtime's perspective that's irrelevant: what matters for the Steam Runtime is how the game starts up.

Old School Runescape is a Windows game being run under Proton, but from your mention of AppImage and a .sh shell script, presumably RuneLite is a native Linux game? Windows games under Proton and native Linux games that do not need Proton are launched rather differently.

If you look at pstree while pressure-vessel-launcher is still running, what other processes are still running? I suspect you might find that Proton's Wine helper processes like winedevice.exe are also still there.

Close out of Old School RuneScape (really, RuneLite)

After you do this, does Steam show the game as still running (the "Play" button changes into "Stop"), or does Steam show it as having exited (the button changes back to "Play")?

ipkpjersi commented 3 years ago

Yeah I understand this use case isn't really supported, I thought it might be worth looking into in case it is a bug with Pressure Vessel itself. RuneLite is basically a third-party (official/unofficial) client for Old School RuneScape, which was a game traditionally written in Java, then ported to C++ for Steam. I wrote a script that launches the RuneLite AppImage with a flag (prevents a bug from happening in RuneLite), and I noticed that even after exiting Steam, Pressure Vessel still runs.

After you do this, does Steam show the game as still running (the "Play" button changes into "Stop"), or does Steam show it as having exited (the button changes back to "Play")? Steam doesn't show it as running when I close it, the Play button does actually say Play, and even when I exit out of Steam, Pressure Vessel is still running.

Here is the output of pstree:

ps aux shows no mention of wine or Steam other than Pressure Vessel itself:

I'm fine with closing this issue off if we think it's out of scope or not actually a bug especially since my workaround basically makes this a non-issue for me.

kisak-valve commented 3 years ago

Closing per the last couple comments.

smcv commented 3 years ago

Interesting. I think this maybe is a bug - probably not in pressure-vessel itself, but more likely a bug in the scripts in the SteamLinuxRuntime_soldier directory. I can't be sure, because I don't know how much of this is your modifications and how much is the startup scripts themselves.

Please could you get the debug log requested in https://github.com/ValveSoftware/steam-runtime/blob/master/doc/reporting-steamlinuxruntime-bugs.md#essential-information and provide it as a gist or attachment?

ipkpjersi commented 3 years ago

I've tried capturing the logging with STEAM_LINUX_RUNTIME_LOG=1 steam however there doesn't appear to be any slr log files in /var/log:

I then ran PRESSURE_VESSEL_VERBOSE=1 PROTON_LOG=1 steam 2>&1 | tee ~/pressure-vessel.log but that doesn't seem to have super helpful logging either (it's mostly just logging from the game and then Steam itself, you can see I closed Steam completely, yet Pressure Vessel is still running in the background as I type this, when I have my workaround commented out, of course), I've now attached that log file. pressure-vessel.log

edit: I just noticed it's supposed to be in the var directory of the game, not in /var/log. With that said, I don't have anything like ~/.local/share/Steam/steamapps and it's not anywhere in ~/.steam/steamapps/common/Old School RuneScape either so I suppose it doesn't matter.

smcv commented 3 years ago

The slr-*.log file would appear in the var subdirectory of SteamLinuxRuntime_soldier, not the game. If you have not reconfigured installation locations, ~/.steam/steamapps/common/SteamLinuxRuntime_soldier/var is a likely place to find it.

ipkpjersi commented 3 years ago

Apparently I had installed SteamLinuxRuntime_soldier to a different steam library which is why I couldn't seem to find it at first.

I've now attached the log file, hopefully it is helpful. slr-app1343370-s6688095af120fec9.log

smcv commented 3 years ago

slr-app1343370-s6688095af120fec9.log

Thanks, that helps.

Because you replaced a Proton game with a native Linux game, Steam is still running the Proton game's "setup commands" (installing MSVCRT, DirectX, etc. into Proton's WINEPREFIX). It looks as though Steam never moves on to the stage of running the game where it would actually run the game - which is intended to be the point at which we tear down the container that was used for the setup commands, and start a new one for the actual game.

This might be related to https://gitlab.steamos.cloud/steamrt/steam-runtime-tools/-/issues/54 (the container never getting terminated if game launch is cancelled).

I think we should leave this issue closed as "won't fix" (because replacing a game's launch commands with a mechanically unrelated game is not really something that is intended to work), and you can continue to use your workaround.

The official way to launch games from Steam that cannot be bought/downloaded from Steam is to add them as a non-Steam game.

If you can reproduce an issue similar to this one with a game that you have not reconfigured - for example the actual Old School Runescape client - then please create a new issue, with the full info from https://github.com/ValveSoftware/steam-runtime/blob/master/doc/reporting-steamlinuxruntime-bugs.md#essential-information.

HanabishiRecca commented 3 years ago

I have the same issue. After game and steam client are closed, pressure-vessel-launcher process still running. And I'm not altering any launch commands or so, just launching games via Steam/Proton 5.13-6. This happens with every game. Games running fine, but every game launch spawns new pressure-vessel-launcher instance and this bug became annoying.

ipkpjersi commented 3 years ago

Well, technically you should be able to use my workaround for any game, just add a script to the launch options that executes killall pressure-vessel-launcher and that should automatically kill pressure-vessel-launcher when the game is exited.

HanabishiRecca commented 3 years ago

@ipkpjersi yeah I know. But I still think this behavior should be fixed.

smcv commented 3 years ago

After game and steam client are closed, pressure-vessel-launcher process still running. And I'm not altering any launch commands or so, just launching games via Steam/Proton 5.13-6.

Please open a separate issue with the full info requested in https://github.com/ValveSoftware/steam-runtime/blob/master/doc/reporting-steamlinuxruntime-bugs.md#essential-information.

HanabishiRecca commented 3 years ago

Not played games for a while. Now updated to 6th version and glad to say that it don't have this issue anymore, at least for me. 🙂