Some games crash when using libstrangle in combination with proton 5.13 or newer
Your system information
- Steam Runtime Version: v0.20210309.0-0-gb38a1fb
- Distribution (e.g. Ubuntu 18.04): debian testing
- Link to your full system information (Help -> System Information) in a GIST: https://gist.github.com/at46/51134de8e41a8aa24351b8a47a1344f4
- Have you checked for system updates?: yes
- Are you using the Steam Linux Runtime compatibility tool?: yes - Proton 5.13 or newer uses the linux runtime soldier
Please describe your issue in as much detail as possible:
I tested some games with Proton 5.13 and libstrangle/mangohud:
Proton 5.13 with libstrangle (strangle 55 %command%):
- Floating Point (32 bit) --> works fine
- Omega Strike (32 bit) --> crash slr-app680340-s3329325895291e38.log
- Life is Strange (32 bit) --> works fine
- Life Is Strange: Before the Storm (64 bit) --> crash slr-app554620-sc7f63094c32bc715.log
- Stories: The Path of Destinies (64 bit) --> crash slr-app439190-s460258974d8a04f4.log
- Warhammer: Chaosbane (64 bit) --> crash slr-app774241-sdbec1607d58d623c.log
- Warstone TD (64 bit) --> crash slr-app562500-sd6a2ae52d3974cac.log
Proton 5.13 with libstrangle and mangohud (strangle 55 mangohud %command%):
- Floating Point (32 bit) --> works fine
- Omega Strike (32 bit) --> crash slr-app680340-s812d1b89f67d7e3a.log
- Life is Strange (32 bit) --> works fine
- Life Is Strange: Before the Storm (64 bit) --> works fine
- Stories: The Path of Destinies (64 bit) --> works fine
- Warhammer: Chaosbane (64 bit) --> works fine
- Warstone TD (64 bit) --> works fine
I tried Life Is Strange: Before the Storm and a dozen other games that I currently have installed but unfortunately I was not able to reproduce this issue.
By checking your System Information report it seems like libstrangle is correctly imported into the container though.
@at46 Can you please try to run Life Is Strange: Before the Storm with these two setups:
-
stranglevk 55 %command%(stranglevk skips the GL part) -
ENABLE_VK_LAYER_TORKEL104_libstrangle=1 STRANGLE_FPS=55 %command%(manually enables libstrangle)
And report back if by any luck either one of them fixes the crash?
Unfortunately Life Is Strange: Before the Storm also crashed with those commands:
-
stranglevk 55 %command%--> slr-app554620-s8e3b5f80e978a5bd.log -
ENABLE_VK_LAYER_TORKEL104_libstrangle=1 STRANGLE_FPS=55 %command%--> slr-app554620-s650e8a7e52465fcb.log
Not sure if it is any helpful but here are the game crash dump 2021-04-05_205926.zip and the proton log steam-554620.log when starting with PROTON_LOG=1 strangle 55 %command%.
What version of libstrangle are you using, and where did you get it? Please be as specific as possible.
I got libstrangle from https://gitlab.com/torkel104/libstrangle which is the official repository as far as I know. The installed version is 0.1.1 and I compiled it at 2020-05-03. There were no new commits during the last year so it should be the latest version. Since I'm a newbie to building software it's possible I did something wrong but everything works fine with native games or proton 5.0-10. I hope that Debian will provide a package in the future (I even made a request for that https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=962905) but that's off topic.
Today I had some time for more testing and I've made a new installation of debian testing on an external hdd, upgraded mesa to 21.0.2, installed libstrangle, steam and Life is Strange 2 (just realized today that Before the Storm does not have a free first episode). On this new installation I also have a crash with proton 5.13+ and strangle 55 %command%.
After that I plugged the hdd into another system with an intel haswell processor, used the igpu of that cpu and there Life is Strange 2 runs fine (well with 6 fps but at least no crash). Then I tried another system with an integrated vega gpu and there I've a crash again (log: slr-app532210-s7a2fd117b5b5deca.log and sysinfo of that system: steam_sys_info.txt)
So for me it seems that radv handles things different than anv and this leads in combination with libstrangle and proton 5.13+ to a crash.
If you're able to get a backtrace from the crash (on Debian testing, systemd-coredump is a good way to achieve that) then that would be a useful way to point at the component(s) that are most likely to be triggering this.
It's weird that enabling MangoHud seems to mostly work around this for you. That makes me wonder whether it's tied up with #363 in some way.
It would also be interesting if you could try a game where the native Linux version uses Vulkan, like Artifact (always Vulkan, I think) or DOTA 2 (special configuration required). With a game like that, you'd be able to switch between:
- native Linux, no container runtime (Properties... -> Compatibility -> disable "Force the use of" etc.)
- native Linux, container runtime (Properties... -> Compatibility -> "Force the use of" -> "Steam Linux Runtime")
- Windows via Proton/DXVK, container runtime (Properties... -> Compatibility -> "Force the use of" -> Proton 5.13 or 6.3)
- Windows via Proton/DXVK, no container runtime (Properties... -> Compatibility -> "Force the use of" -> Proton 5.0)
which might help to narrow down where the problem is.
There was a steam runtime soldier update and my following test results were obtained with this version:
cat .steam/steam/steamapps/common/SteamLinuxRuntime_soldier/VERSIONS.txt
#Name Version Runtime Runtime_Version Comment
SteamLinuxRuntime v0.20210309.0-4-ge09b2e6 # Entry point scripts, etc.
pressure-vessel 0.20210317.0+srt1 scout 0.20210317.0 # pressure-vessel-bin.tar.gz
soldier 0.20210317.0 soldier 0.20210317.0 # com.valvesoftware.SteamRuntime.Platform-amd64,i386-soldier-runtime.tar.gz
I tested Artifact Classic on my main system (GIST) with strangle 55 %command%:
- native Linux, no container runtime -> works fine
- native Linux, container runtime -> crash core.dcg.1000.1e01b17c1daf4e479e2ab0bd0c6fe505.14384.1618424342000000.zst.zip
- native Linux, container runtime but without libstrangle -> works fine
- Proton 5.0 with DXVK, no container runtime -> works fine
- Proton 5.13 with DXVK, container runtime -> works fine
Since Artifact surprisingly worked fine with proton 5.13 and libstrangle I also retested Life is Strange 2:
- Proton 5.13 with DXVK, container runtime and
strangle 55 %command%-> still crash (there's no coredump file for LiS2 in /var/lib/systemd/coredump/) - Proton 5.13 with DXVK, container runtime and
strangle 55 mangohud %command%-> works fine
I've no idea why artifact works fine with proton 5.13 and why mangohud seems to work around the problem. Since I'm using Mesa 21.0 since it entered experimental I already have the mentioned fix from #363.
Thanks, knowing that native Linux Artifact crashes in a SteamLinuxRuntime container is really useful - this way, we can remove Proton and DXVK from the list of potential things to blame.
A core dump isn't something I can analyze unless I happen to have exactly the same packages and versions as you, but if you're able to get a backtrace of the crash from coredumpctl gdb (see https://wiki.debian.org/HowToGetABacktrace) then that would be quite useful - potentially even without installing debug symbols.
I probably did this wrong: https://gist.github.com/at46/8df458759e3c1626170a9352ab817bf2
Hmm, yes, that stack trace doesn't tell us much - I'll have to write some better instructions for getting backtraces from things that run in the container, or try to reproduce this locally.
One thing that it does tell us is that this crash is probably a call to a NULL function pointer.
If there's anything I can do to help fixing this issue please let me know.