Hi there!
I have a situation about a game that has problems with running via Steam but the same binaries run fine via Lutris.
ProtonDB page of the said game: https://www.protondb.com/app/214590 (Fairy Bloom Freesia)
I tried it years ago, probably around Proton 4-2 times, and I was getting the very same error I get today if I run the game from Steam.
DirectX error: StrecthRect is invalid call
I don’t know what Steam does differently but in the meantime it causes this error. Probably it’s game’s own problem at some circumstances (regarding it’s a custom Japanese engine) and what Steam does triggers this error. I’m using Glorious Eggroll’s Proton 10-15 on both Steam and Lutris, that’s why I think it’s related to Steam client itself.
Also tried WINE and if I run the game with regular WINE from my system, the performance would be really poor, but at least it runs.
So, I’m trying to understand what would be the difference. Do we know what might Steam client does behind the doors? According to the latest reviews on ProtonDB, the game should run fine. That’s why I wanted to try it again after so many years.
I tried every Proton version and I get the same error almost on every version. For some, it crashes right away. Launch options such as PROTON_USE_WINED3D=1
do not help either.
Any ideas what should I check or try?
I’m on EndeavourOS, my Steam is a native package.
Processes launched from Steam run in an altogether different runtime environment compared to Lutris. When Steam launches an application, it uses several wrapper processes that you can see in
btop
’s process tree. Pressure Vessel (pv-adverb
) and Bubblewrap (srt-bwrap
) are sandboxing solutions by Valve and Flatpak respectively, and Reaper is responsible for tracking and cleaning up Wine processes when the game is closed.
This is what the process tree looks like when I launch Warframe:
That sandboxing is not making things easy for me though. They seem to be the culprit for now since they don’t exist if I launch it via Lutris. Not sure what to do at this point.
Steam also supplies its own shared libraries, many of which are 32-bit. It does a lot of fuckery with
LD_PRELOAD
to load its own stuff instead of system libraries. Thesteam-native-runtime
package in themultilib
repository replaces those with system libraries, and provides thesteam-native
command that runs Steam without said fuckery. I can’t guarantee it’ll work at all.Tried
steam-native
but sadly didn’t fix the issue. Apparently it does indeed fix some problems for some games. Maybe I can useLD_PRELOAD
to pull some system files before running the game via a launch option but no idea where to start or if it would work at all. I could also try flatpak Steam but whenever I tried that I had worse experiences.
I believe Steam has a mechanism for applying additional flags to Proton. On ProtonDB, some games had recommended flags mentioned in user comments to improve performance on Linux. In some cases, these flags were later included by default for those specific games, so users wouldn’t need to configure them manually. I’m not sure exactly how this process works, or whether the flags are set by the developers themselves or by specific Steam maintainers. So the problem might be that Steam has flags that Lutris doesn’t or vice versa. Try to check game folder in Steam and look for files that might include those flags.
That’s a sound advice. However I checked the game files and other than
steam_api.dll
andwuvorbis.dll
there is only one other dll which isd3dx9_36.dll
. So when I run the game via Lutris, it probably just doesn’t use steam_api.dll. But I don’t think this issue is related to that because I can already disable Steam overlay etc, and that doesn’t do anything. Other than that I don’t see anything unusual there.
Steam uses the Steam runtime and can automatically apply specific settings and configurations known as Protonfixes.
Try using Proton in Lutris and enabling the Steam runtime. Lutris has support for a tool called Umu Launcher which essentially replicates Steams method of launching games and applies Protonfixes for you. I don’t know the exact requirements to use it, but looking around in the discord (unfortunately) might get you some info.
Lutris (and so Umu launcher) runs the game just fine if I use GE-Proton. However there is no Steam connection there. If I select to run it via Steam runtime inside Lutris, I still get the same error. (I think that option just runs the game via Steam and nothing more?).
If there are auto-enabled flags like
PROTON_USE_DXVK=1
, I might try to disable them. Though there are many of these.Oh my bad, I misread the first line. In that case, I would guess that Proton on Steam might be using a different version of the DirectX translation layer. I’m not sure which that is, since im not sure which directx version the game uses.
Very interesting that at least one person reported the same error happening on Windows.
Edit: My guess is that wine is using WINED3D, the directx 9 to opengl translation layer, while proton is using DXVK. Since the game reportedly has this error on windows, the issue might actually be that DXVK is doing the “correct” thing and crashing the same way it would on windows.
Did you verify that PROTON_USE_WINED3D=1 crashes with the exact same error and not a new one? Since you said the game works with vanilla wine, which defaults to wined3d, I would expect this to fix it.
No problem! Yeah, I saw that too. Though it’s from 2013 and before even Windows 10 but since it happened on Windows at one point says it might not be all related to translation layers.
Game uses DirectX 9 since it has a d3d dll in the game files. But I have no idea how can I check what Proton uses.
whoops, edited my other comment since I hadn’t noticed your reply yet.
Can you share the launch options you’re using to set PROTON_USE_WINED3D=1, as well as verify the the crash gives the same error?
I found a few examples of the variable not working correctly for people. Could you share your proton version and the logs?
No problem! :)
Actually
PROTON_USE_WINED3D=1
was one of the first things I have tried. Sadly it still gives the same error.Currently I’m using GE-Proton10-15. These are the logs:
[2025-09-27 21:32:12] Game process added : AppID 214590 "PROTON_LOG=1 /home/mb/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- /home/mb/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=214590 -- '/mnt/SSD480G/SteamLibrary/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/mb/.local/share/Steam/compatibilitytools.d/GE-Proton10-15'/proton waitforexitandrun '/mnt/SSD480G/SteamLibrary/steamapps/common/Fairy Bloom Freesia/FairyBloomFreesia.exe'", ProcID 1223438, IP 0.0.0.0:0 [2025-09-27 21:32:12] Loaded Config for Local Override Path for App ID 214590, Controller 4: /home/mb/.local/share/Steam//controller_base/empty.vdf [2025-09-27 21:32:12] GameAction [AppID 214590, ActionID 26] : LaunchApp changed task to WaitingGameWindow with "" [2025-09-27 21:32:12] GameAction [AppID 214590, ActionID 26] : LaunchApp changed task to Completed with "" [2025-09-27 21:32:14] ThreadGetProcessExitCode: no such process 1223557 [2025-09-27 21:32:14] ThreadGetProcessExitCode: no such process 1223553 [2025-09-27 21:32:14] ThreadGetProcessExitCode: no such process 1223440 [2025-09-27 21:32:16] Game process updated : AppID 214590 "PROTON_LOG=1 /home/mb/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- /home/mb/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=214590 -- '/mnt/SSD480G/SteamLibrary/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/mb/.local/share/Steam/compatibilitytools.d/GE-Proton10-15'/proton waitforexitandrun '/mnt/SSD480G/SteamLibrary/steamapps/common/Fairy Bloom Freesia/FairyBloomFreesia.exe'", ProcID 1223554, IP 0.0.0.0:0 [2025-09-27 21:32:16] ThreadGetProcessExitCode: no such process 1223565 [2025-09-27 21:32:16] Loaded Config for Local Override Path for App ID 214590, Controller 4: /home/mb/.local/share/Steam//controller_base/empty.vdf [2025-09-27 21:32:18] Game process updated : AppID 214590 "PROTON_LOG=1 /home/mb/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- /home/mb/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=214590 -- '/mnt/SSD480G/SteamLibrary/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/mb/.local/share/Steam/compatibilitytools.d/GE-Proton10-15'/proton waitforexitandrun '/mnt/SSD480G/SteamLibrary/steamapps/common/Fairy Bloom Freesia/FairyBloomFreesia.exe'", ProcID 1223649, IP 0.0.0.0:0 [2025-09-27 21:32:19] Loaded Config for Local Override Path for App ID 413080, Controller 4: /home/mb/.local/share/Steam//controller_base/empty.vdf [2025-09-27 21:32:20] ThreadGetProcessExitCode: no such process 1223607 [2025-09-27 21:32:20] ThreadGetProcessExitCode: no such process 1223567 [2025-09-27 21:32:20] ThreadGetProcessExitCode: no such process 1223554 [2025-09-27 21:32:20] ThreadGetProcessExitCode: no such process 1223552 [2025-09-27 21:32:20] ThreadGetProcessExitCode: no such process 1223439 [2025-09-27 21:32:21] Game process removed: AppID 214590 "PROTON_LOG=1 /home/mb/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- /home/mb/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=214590 -- '/mnt/SSD480G/SteamLibrary/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/mb/.local/share/Steam/compatibilitytools.d/GE-Proton10-15'/proton waitforexitandrun '/mnt/SSD480G/SteamLibrary/steamapps/common/Fairy Bloom Freesia/FairyBloomFreesia.exe'", ProcID 1223649 [2025-09-27 21:32:21] ThreadGetProcessExitCode: no such process 1223649 [2025-09-27 21:32:21] ThreadGetProcessExitCode: no such process 1223631 [2025-09-27 21:32:21] ThreadGetProcessExitCode: no such process 1223584 [2025-09-27 21:32:21] ThreadGetProcessExitCode: no such process 1223579 [2025-09-27 21:32:21] ThreadGetProcessExitCode: no such process 1223570
Wild guess: Does your system have more than one GPU? Is it possible that the wrong one is being used in Steam?
Too wild. :)
Sadly nope. Also the game probably can run on Intel HD Graphics anyways, it’s quite old.