Confused on Steam Play and Proton? Be sure to check out our guide.
Steam Play not working even on approved titles...
cfrob Dec 7, 2018
I can't get any games to run through Steam Play (proton). I'm running Fedora 29. Whenever I hit play, the "preparing to launch" window comes up, and then a few seconds later, the program exits. I've turned on proton logging in the config file ~/.steam/steam/steamapps/common/'Proton 3.16'/user_settings.py. It creates an empty log in my home directory.

Dark Souls III (the first random game I came across in my library which is on Valve's approved for Steam Play list) terminal output:

Loaded Config for Local Selection Path for App ID 374320: /home/robert/.local/share/Steam/steamapps/workshop/content/241100/771654329/259345425586508431_legacy.bin
[374320]Non-Steam Controller Configs Enabled: 1
Loaded Config for Local Override Path for App ID 374320: /home/robert/.local/share/Steam//controller_base/empty.vdf
GameAction [AppID 374320, ActionID 1] : LaunchApp changed task to ProcessingInstallScript with ""
Traceback (most recent call last):
File "/home/robert/.local/share/Steam/steamapps/common/Proton 3.16/proton", line 326, in <module>
vr_config = j["config"][0]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
File "/home/robert/.local/share/Steam/steamapps/common/Proton 3.16/proton", line 326, in <module>
vr_config = j["config"][0]
TypeError: 'NoneType' object is not subscriptable
Traceback (most recent call last):
File "/home/robert/.local/share/Steam/steamapps/common/Proton 3.16/proton", line 326, in <module>
vr_config = j["config"][0]
TypeError: 'NoneType' object is not subscriptable
installscript_posix.cpp (416) : Assertion Failed: Standalone evaluator returned error code for app 374320
installscript_posix.cpp (416) : Assertion Failed: Standalone evaluator returned error code for app 374320
Installing breakpad exception handler for appid(steam)/version(1543346820)
crash_20181206215514_43.dmp[17563]: Uploading dump (out-of-process)
/tmp/dumps/crash_20181206215514_43.dmp
GameAction [AppID 374320, ActionID 1] : LaunchApp changed task to SynchronizingCloud with ""
GameAction [AppID 374320, ActionID 1] : LaunchApp changed task to ProcessingShaderCache with ""
GameAction [AppID 374320, ActionID 1] : LaunchApp changed task to SiteLicenseSeatCheckout with ""
GameAction [AppID 374320, ActionID 1] : LaunchApp changed task to CreatingProcess with ""
GameAction [AppID 374320, ActionID 1] : LaunchApp waiting for user response to CreatingProcess ""
GameAction [AppID 374320, ActionID 1] : LaunchApp continues with user response "CreatingProcess"
Game update: AppID 374320 "", ProcID 17565, IP 0.0.0.0:0
ERROR: ld.so: object '/home/robert/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/robert/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Loaded Config for Local Selection Path for App ID 374320: /home/robert/.local/share/Steam/steamapps/workshop/content/241100/771654329/259345425586508431_legacy.bin
ERROR: ld.so: object '/home/robert/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
Loaded Config for Local Override Path for App ID 374320: /home/robert/.local/share/Steam//controller_base/empty.vdf
>>> Adding process 17565 for game ID 374320
GameAction [AppID 374320, ActionID 1] : LaunchApp changed task to WaitingGameWindow with ""
GameAction [AppID 374320, ActionID 1] : LaunchApp changed task to Completed with ""
>>> Adding process 17566 for game ID 374320
Traceback (most recent call last):
File "/home/robert/.local/share/Steam/steamapps/common/Proton 3.16/proton", line 326, in <module>
vr_config = j["config"][0]
TypeError: 'NoneType' object is not subscriptable
crash_20181206215514_43.dmp[17563]: Finished uploading minidump (out-of-process): success = yes
crash_20181206215514_43.dmp[17563]: response: CrashID=bp-8f666681-eef1-4d4a-bc16-3ac352181206
crash_20181206215514_43.dmp[17563]: file ''/tmp/dumps/crash_20181206215514_43.dmp'', upload yes: ''CrashID=bp-8f666681-eef1-4d4a-bc16-3ac352181206''
Game removed: AppID 374320 "", ProcID 17565

Can anyone make sense of this? Am I missing something? Regardless, I'd appreciate any help you can offer and let me know if more information is needed.

... Okay after looking this over again I remembered that I clicked SteamVR when I first loaded up Steam just to see what would happen and then realized it was installing and stopped it. If I have a borked config file somewhere having to do with VR that might explain the weird vr_config errors I'm getting.

Second edit, I removed the lines from the proton script which were checking my VR configuration, and now titles are launching like normal. I'd like to not be running an edited version of proton, though. Because if i have to change versions I will have the same problem. Does anyone know how I can give proton what it wants? Here are the relevant lines from proton:

#copy openvr files into place
dst = prefix + "/drive_c/vrclient/bin/"
makedirs(dst)
shutil.copy(basedir + "/dist/lib/wine/fakedlls/vrclient.dll", dst)
shutil.copy(basedir + "/dist/lib64/wine/fakedlls/vrclient_x64.dll", dst)

shutil.copy(basedir + "/dist/lib/wine/dxvk/openvr_api_dxvk.dll", prefix + "/drive_c/windows/syswow64/")
shutil.copy(basedir + "/dist/lib64/wine/dxvk/openvr_api_dxvk.dll", prefix + "/drive_c/windows/system32/")

#parse linux openvr config and present it in win32 format to the app.
#logic from openvr's CVRPathRegistry_Public::GetPaths

#check environment for overrides
vr_runtime = None
if "VR_OVERRIDE" in env:
vr_runtime = env["VR_OVERRIDE"]
env.pop("VR_OVERRIDE")

vr_config = None
if "VR_CONFIG_PATH" in env:
vr_config = env["VR_CONFIG_PATH"]
env.pop("VR_CONFIG_PATH")

vr_log = None
if "VR_LOG_PATH" in env:
vr_log = env["VR_LOG_PATH"]
env.pop("VR_LOG_PATH")

#load from json if needed
if vr_runtime is None or \
vr_config is None or \
vr_log is None:
try:
path = os.environ.get("XDG_CONFIG_HOME", os.environ["HOME"] + "/.config")
path = path + "/openvr/openvrpaths.vrpath"

with open(path, "r") as jfile:
j = json.load(jfile)

if vr_runtime is None:
vr_runtime = j["runtime"][0]

if vr_config is None:
vr_config = j["config"][0]

if vr_log is None:
vr_log = j["log"][0]
except (ValueError, OSError):
pass
ageres Dec 7, 2018
Is your graphics driver up to date? What about non-DX11 games?
MaCroX95 Dec 7, 2018
Make sure that you meet all the minimum requirements for Steam Play:

- Graphics card with Vulkan and latest OpenGL support
- Driver updated to latest Nvidia driver or latest MESA for AMD/Intel

+ take Steam Play with a grain of sault since it's still an experimental feature and work in progress even for whitelisted titles.
Xpander Dec 7, 2018
What previously was said
+using officially not supported distro.

also afaik Arch and Fedora both have the filelimit issue, which means esync doesn't work out of box, so check you distro wiki to increase that or use PROTON_NO_ESYNC, which will most likely kill perf.
wvstolzing Dec 7, 2018
Quoting: XpanderWhat previously was said
+using officially not supported distro.

also afaik Arch and Fedora both have the filelimit issue, which means esync doesn't work out of box, so check you distro wiki to increase that or use PROTON_NO_ESYNC, which will most likely kill perf.

As to file limits on Fedora, this solved the issue I had with Downwell over proton (a tiny gamemaker game that kept crashing before I changed the following settings; now it works perfectly).

An excerpt from this page: esync on systemd distros

QuoteOn distributions using systemd, the settings in `/etc/security/limits.conf`
will be overridden by systemd's own settings. If you run `ulimit -Hn` and it
returns a lower number than the one you've previously set, then you can set

DefaultLimitNOFILE=1024:1048576

in both `/etc/systemd/system.conf` and `/etc/systemd/user.conf`. You can then
execute `sudo systemctl daemon-reexec` and restart your session. Check again
with `ulimit -Hn` that the limit is correct.

Also note that if the wineserver has esync active, all clients also must, and
vice versa. Otherwise things will probably crash quite badly.
While you're here, please consider supporting GamingOnLinux on:

Reward Tiers: Patreon. Plain Donations: PayPal.

This ensures all of our main content remains totally free for everyone! Patreon supporters can also remove all adverts and sponsors! Supporting us helps bring good, fresh content. Without your continued support, we simply could not continue!

You can find even more ways to support us on this dedicated page any time. If you already are, thank you!
Login / Register


Or login with...
Sign in with Steam Sign in with Google
Social logins require cookies to stay logged in.