Open veger opened 5 years ago
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
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:
It is indeed true that
syswow64
is a directory... I guess theopenvr_api_dxvk.dll
should be copied into this directory..?BTW the
openvr_api_dxvk.dll
(somehow) managed to live in this directory/location (already)...