When I run a VR game I get a lot of the tracebacks in my logs.
I have no idea if they are serious or not, but I couldn't find any info about them:
Traceback (most recent call last):
File "/home/user/.local/share/Steam/steamapps/common/Proton 4.11/proton", line 709, in <module>
g_session.init_session()
File "/home/user/.local/share/Steam/steamapps/common/Proton 4.11/proton", line 552, in init_session
g_compatdata.setup_prefix()
File "/home/user/.local/share/Steam/steamapps/common/Proton 4.11/proton", line 334, in setup_prefix
try_copy(g_proton.lib_dir + "wine/dxvk/openvr_api_dxvk.dll", self.prefix_dir + "/drive_c/windows/syswow64/")
File "/home/user/.local/share/Steam/steamapps/common/Proton 4.11/proton", line 61, in try_copy
shutil.copy(src, dst)
File "/usr/lib/python3.7/shutil.py", line 248, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/usr/lib/python3.7/shutil.py", line 121, in copyfile
with open(dst, 'wb') as fdst:
IsADirectoryError: [Errno 21] Is a directory: '/home/user/SteamLibrary/steamapps/compatdata/620980/pfx//drive_c/windows/syswow64/'
It is indeed true that syswow64 is a directory...
I guess the openvr_api_dxvk.dll should be copied _into_ this directory..?
BTW the openvr_api_dxvk.dll (somehow) managed to live in this directory/location (already)...
I've seen this a couple times. Usually caused by something going wrong with setting up the game's compatdata folder. Can you post the output from this command:
find /home/user/SteamLibrary/steamapps/compatdata/620980
Sorry for the delay.
Please find the output here: https://gist.github.com/veger/539334ad617adbb60706036199182811
I can't find any reason for this to be happening. We are trying to copy openvr_api_dxvk.dll into syswow64. Python's shutil.copy allows the destination parameter to be a directory, which is what we're doing here. For some reason, it is trying to open that directory as if it were the destination file.
Looking at the implementation of shutil.copy, you can see that it should be doing this:
def copy(src, dst, *, follow_symlinks=True):
if os.path.isdir(dst):
dst = os.path.join(dst, os.path.basename(src))
copyfile(src, dst, follow_symlinks=follow_symlinks)
But in your backtrace, dst doesn't have the filename appended, hence the error. So either os.path.isdir doesn't think syswow64 is a directory, or either os.path.basename or os.path.join are failing for some reason.
Something is going on here that I don't understand. Have you ever used an unofficial Proton build for these games before? What OS are you using, and what Python version do you have installed (python3 --version)? Are your games installed on a 2nd drive with NTFS, or do you have some kind of symlink situation going on with your Steam library?
I wrote a little Python script to try to diagnose this. Can you download it and run it with something like python3 ~/Downloads/test-3119.txt? test-3119.txt
For example, here's the output from my machine (with the paths changed appropriately):
$ python3 test-3119.py
vrdll path: /mnt/ext/SteamLibrary/steamapps/common/Proton 4.11/dist/lib/wine/dxvk/openvr_api_dxvk.dll
sysdir path: /mnt/ext/SteamLibrary/steamapps/compatdata/851100/pfx//drive_c/windows/syswow64/
os.path.isdir(sysdir): True
os.path.basename(vrdll): openvr_api_dxvk.dll
joining
src: /mnt/ext/SteamLibrary/steamapps/common/Proton 4.11/dist/lib/wine/dxvk/openvr_api_dxvk.dll
dst: /mnt/ext/SteamLibrary/steamapps/compatdata/851100/pfx//drive_c/windows/syswow64/openvr_api_dxvk.dll
calling shutil.copy:
done!
$ python --version
Python 3.7.4
output of the test script:
$ python3 test-3119.py
vrdll path: /home/user/.local/share/Steam/steamapps/common/Proton 4.11/dist/lib/wine/dxvk/openvr_api_dxvk.dll
sysdir path: /home/user/SteamLibrary/steamapps/compatdata/620980/pfx//drive_c/windows/syswow64/
os.path.isdir(sysdir): True
os.path.basename(vrdll): openvr_api_dxvk.dll
joining
src: /home/user/.local/share/Steam/steamapps/common/Proton 4.11/dist/lib/wine/dxvk/openvr_api_dxvk.dll
dst: /home/user/SteamLibrary/steamapps/compatdata/620980/pfx//drive_c/windows/syswow64/openvr_api_dxvk.dll
calling shutil.copy:
done!
Have you ever used an unofficial Proton build for these games before?
No, it was a clean install of this game
What OS are you using
Arch Linux (fully up-to-date, with mesa-git repo for newest mesa version)
Are your games installed on a 2nd drive with NTFS, or do you have some kind of symlink situation going on with your Steam library?
Symbolic link, /home/user/SteamLibrary links to /mnt/hhd/SteamLibrary (my home dir is on ssd, but it won't fit all of my games) The output of the test script is (similarly) anonymized, but it used the symbolic link as well.
This error occurs when shutil.copy is passed a dst with a trailing slash that does not exist.
For example, shutil.copy('test.txt', '/tmp/test.txt') will work whether /tmp/test.txt exists or not, but shutil.copy('test.txt', '/tmp/test.txt/') will fail (if that directory does not exist) -- isdir() will return false (something that doesn't exist is not a directory) but copyfile() can't then open something with a trailing / as a file.
So, something is going wrong before it reaches this point: the syswow64 directory or one of its antecedents isn't getting created when it should.
I also have this issue.
/data/src/clientdll/installscript_posix.cpp (418) : Assertion Failed: Standalone evaluator returned error code for app 1237950
Traceback (most recent call last):
File "/home/davidak/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 697, in <module>
g_session.init_session()
File "/home/davidak/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 538, in init_session
g_compatdata.setup_prefix()
File "/home/davidak/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 347, in setup_prefix
try_copy(g_proton.lib_dir + "wine/dxvk/openvr_api_dxvk.dll", self.prefix_dir + "/drive_c/windows/syswow64/")
File "/home/davidak/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 59, in try_copy
shutil.copy(src, dst)
File "/nix/store/55b9ip7xkpimaccw9pa0vacy5q94f5xa-python3-3.7.6/lib/python3.7/shutil.py", line 248, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/nix/store/55b9ip7xkpimaccw9pa0vacy5q94f5xa-python3-3.7.6/lib/python3.7/shutil.py", line 121, in copyfile
with open(dst, 'wb') as fdst:
IsADirectoryError: [Errno 21] Is a directory: '/run/media/davidak/721E-8660/Steam/steamapps/compatdata/1237950/pfx//drive_c/windows/syswow64/'
The SteamLibrary is on an Exfat partition. It's the fist time t use that, so might be related?
The syswow64 directory don't exists:
[davidak@gaming:~]$ ll /run/media/davidak/721E-8660/Steam/steamapps/compatdata/1237950/pfx//drive_c/windows/syswow64/
ls: cannot access '/run/media/davidak/721E-8660/Steam/steamapps/compatdata/1237950/pfx//drive_c/windows/syswow64/': No such file or directory
[davidak@gaming:~]$ ll /run/media/davidak/721E-8660/Steam/steamapps/compatdata/1237950/pfx/drive_c/windows/
total 128
drwxr-xr-x 2 davidak users 131072 Jun 13 20:39 Fon
Game is STAR WARS Battlefront II (1237950).
Same with Wakamarina Valley, New Zealand (1291330):
...
GameAction [AppID 1291330, ActionID 8] : LaunchApp changed task to Completed with ""
Traceback (most recent call last):
File "/home/davidak/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 697, in <module>
g_session.init_session()
File "/home/davidak/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 538, in init_session
g_compatdata.setup_prefix()
File "/home/davidak/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 347, in setup_prefix
try_copy(g_proton.lib_dir + "wine/dxvk/openvr_api_dxvk.dll", self.prefix_dir + "/drive_c/windows/syswow64/")
File "/home/davidak/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 59, in try_copy
shutil.copy(src, dst)
File "/nix/store/55b9ip7xkpimaccw9pa0vacy5q94f5xa-python3-3.7.6/lib/python3.7/shutil.py", line 248, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/nix/store/55b9ip7xkpimaccw9pa0vacy5q94f5xa-python3-3.7.6/lib/python3.7/shutil.py", line 121, in copyfile
with open(dst, 'wb') as fdst:
IsADirectoryError: [Errno 21] Is a directory: '/run/media/davidak/721E-8660/Steam/steamapps/compatdata/1291330/pfx//drive_c/windows/syswow64/'
Game removed: AppID 1291330 "", ProcID 20788
Uploaded AppInterfaceStats to Steam
Exiting app 1291330
I also moved Half-Life: Blue Shift (130) there and it works perfectly. So this is a Proton issue.
When i move Wakamarina to my ext4 root fs, it works.
So the issue here is when using Proton with gvfs mounted exfat.
Hello @davidak, Proton does not support exfat (#3835 / https://github.com/ValveSoftware/Proton/issues/381#issuecomment-417734998 ).
I can confirm that this is not limited to FAT, I've seen it on ext4 as well.
It happens on ext4 as well, maybe all cases where users have a non-default path? This happened in Rocksmith 2014 for me.
Anyhow I managed to fix it by manually creating the directories
mkdir 221680/pfx/drive_c/windows/syswow64
mkdir 221680/pfx//drive_c/windows/system32
In my case I'm using the default path and it still happened, but it doesn't happen consistently, so...
Happened when uninstalling a game and then reinstalling it after some time. Most likely Proton is unable to clean up the dir properly.
>>> Adding process 1820032 for game ID 293260
Traceback (most recent call last):
File "/home/techtonik/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 697, in <module>
g_session.init_session()
File "/home/techtonik/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 538, in init_session
g_compatdata.setup_prefix()
File "/home/techtonik/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 347, in setup_prefix
try_copy(g_proton.lib_dir + "wine/dxvk/openvr_api_dxvk.dll", self.prefix_dir + "/drive_c/windows/syswow64/")
File "/home/techtonik/.local/share/Steam/steamapps/common/Proton 5.0/proton", line 59, in try_copy
shutil.copy(src, dst)
File "/usr/lib/python3.8/shutil.py", line 415, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "/usr/lib/python3.8/shutil.py", line 261, in copyfile
with open(src, 'rb') as fsrc, open(dst, 'wb') as fdst:
IsADirectoryError: [Errno 21] Is a directory: '/home/techtonik/.local/share/Steam/steamapps/compatdata/293260/pfx//drive_c/windows/syswow64/'
$ ls -la ~/.local/share/Steam/steamapps/compatdata/293260/pfx/drive_c/windows/
total 12
drwxrwxr-x 3 techtonik techtonik 4096 胁械褉 27 23:00 .
drwxrwxr-x 5 techtonik techtonik 4096 胁械褉 27 23:00 ..
drwxrwxr-x 2 techtonik techtonik 4096 胁械褉 28 20:00 Fonts
Most helpful comment
It happens on ext4 as well, maybe all cases where users have a non-default path? This happened in Rocksmith 2014 for me.
Anyhow I managed to fix it by manually creating the directories