Matoking / protontricks

A wrapper that does winetricks things for Proton enabled games, requires Winetricks.
GNU General Public License v3.0
1.65k stars 37 forks source link

Wine looking for ntdll.so when adding d3dcompiler_43 and 47 (GloriousEggroll) #102

Closed CreativeGrey closed 3 years ago

CreativeGrey commented 3 years ago

Describe the bug A clear and concise description of what the bug is. Trying to Mass effect legendary edition working, was told to use GloriousEggroll's newest build and this protontricks command. An error is thrown up and the process not started when command is run.

To Reproduce When set to use Glorious Eggroll's Proton-6.8-GE-2 release, attempting to run the following command throws up the error protontricks 1328670 d3dcompiler_43 d3dcompiler_47

Error

warning: /home/creativegrey/.cache/protontricks/proton/Proton-6.8-GE-2/bin/wine cmd.exe /c echo '%AppData%' returned empty string, error message "wine: could not load ntdll.so: /home/creativegrey/.steam/root/compatibilitytools.d/Proton-6.8-GE-2/files/lib/wine/ntdll.so: cannot open shared object file: No such file or directory"

Expected behavior install the protontricks fix

System (please complete the following information):

protontricks -v output

protontricks (INFO): Found Steam directory at /home/creativegrey/.steam/steam. You can also define Steam directory manually using $STEAM_DIR protontricks (INFO): Using default Steam Runtime at /home/creativegrey/.steam/root/ubuntu12_32/steam-runtime protontricks (INFO): WINETRICKS environment variable is not available. Searching from $PATH. protontricks (INFO): Found 1 Steam library folders protontricks (INFO): Multiple compatdata directories found for app 17460 protontricks (INFO): Currently logged-in Steam user: _ethan_c protontricks (INFO): Found 0 Steam shortcuts running under Proton protontricks (INFO): Found active custom Proton installation: Proton-6.8-GE-2 protontricks (INFO): WINE environment variable is not available. Setting WINE environment variable to Proton bundled version protontricks (INFO): WINESERVER environment variable is not available. Setting WINESERVER environment variable to Proton bundled version protontricks (INFO): Created Steam Runtime Wine binary directory at /home/creativegrey/.cache/protontricks/proton/Proton-6.8-GE-2/bin protontricks (INFO): Attempting to run command [PosixPath('/usr/local/bin/winetricks'), 'd3dcompiler_43', 'd3dcompiler_47']

warning: Your version of wine is no longer supported upstream. You should upgrade to 5.x

Executing mkdir -p /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670

warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.


WINEPREFIX INFO: Drive C: total 40 drwxrwxr-x 9 creativegrey creativegrey 4096 May 18 13:14 . drwxrwxr-x 4 creativegrey creativegrey 4096 May 18 15:22 .. drwxrwxr-x 2 creativegrey creativegrey 4096 May 18 15:20 openxr drwxrwxr-x 6 creativegrey creativegrey 4096 May 18 12:49 ProgramData drwxrwxr-x 6 creativegrey creativegrey 4096 May 18 12:14 Program Files drwxrwxr-x 10 creativegrey creativegrey 4096 May 18 12:49 Program Files (x86) drwxrwxr-x 4 creativegrey creativegrey 4096 May 18 12:14 users drwxrwxr-x 3 creativegrey creativegrey 4096 May 18 12:14 vrclient drwxrwxr-x 19 creativegrey creativegrey 4096 May 18 15:22 windows -rw-rw-r-- 1 creativegrey creativegrey 8 May 18 13:14 .windows-serial

Registry info: /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/system.reg:#arch=win64 /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/user.reg:#arch=win64 /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/userdef.reg:#arch=win64


warning: /home/creativegrey/.cache/protontricks/proton/Proton-6.8-GE-2/bin/wine cmd.exe /c echo '%AppData%' returned empty string, error message "wine: could not load ntdll.so: /home/creativegrey/.steam/root/compatibilitytools.d/Proton-6.8-GE-2/files/lib/wine/ntdll.so: cannot open shared object file: No such file or directory"

Matoking commented 3 years ago

Did you first run the game using a Proton version other than Proton-6.8-GE-2 or GE-1 and then change it? The changelog for GE-1 states:

IMPORTANT NOTES: Due to large changes in wine 6.5+, you will need to remove old/current prefixes for any games launched with this version. Old prefixes will not work.

If that is the case, you can try removing /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670 directory (you will lose your local save data, ensure it is backed up), launch the game again and then try running the Protontricks command again.

CreativeGrey commented 3 years ago

Nope, same error message. And as far as I can tell, there is no such thing as an ntdll.so file in GloriousEggroll, just in the newest steam proton versions.

Matoking commented 3 years ago

Could you try running the following commands and posting the resulting output?

# You will need strace for the following command, so install it
$ sudo apt install strace

$ protontricks -c bash 1328670
# A new shell will be opened. Run the following commands inside it and copy the output.
$ wine --version
$ strace -e trace=open,openat,execve wine --version 2>&1 | grep ntdll

In my case, the last two commands have the following output:

$ wine --version
wine-6.8 (Staging)
$ strace -e trace=open,openat,execve wine --version 2>&1 | grep ntdll
openat(AT_FDCWD, "/home/matoking/.local/share/Steam/compatibilitytools.d/Proton-6.8-GE-2/files/bin/../lib/wine/i386-unix/ntdll.so", O_RDONLY|O_LARGEFILE|O_CLOEXEC) = 3

In the latter case, the Wine executable is able to find the ntdll.so file properly; multiple openat lines would indicate it's trying to find the file but failing for some reason.

CreativeGrey commented 3 years ago

$wine -- version

wine: could not load ntdll.so: /home/creativegrey/.steam/root/compatibilitytools.d/Proton-6.8-GE-2/files/lib/wine/ntdll.so: cannot open shared object file: No such file or directory

$strace -e trace=open,openat,execve wine --version 2>&1 | grep ntdll

openat(AT_FDCWD, "/home/creativegrey/.local/share/Steam/compatibilitytools.d/Proton-6.8-GE-2/files/bin/../lib/wine/i386-unix/ntdll.so", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/home/creativegrey/.steam/root/compatibilitytools.d/Proton-6.8-GE-2/files/lib64/wine/i386-unix/ntdll.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/creativegrey/.steam/root/compatibilitytools.d/Proton-6.8-GE-2/files/lib64/wine/ntdll.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) openat(AT_FDCWD, "/home/creativegrey/.steam/root/compatibilitytools.d/Proton-6.8-GE-2/files/lib/wine/i386-unix/ntdll.so", O_RDONLY|O_CLOEXEC) = 3 openat(AT_FDCWD, "/home/creativegrey/.steam/root/compatibilitytools.d/Proton-6.8-GE-2/files/lib/wine/ntdll.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory) wine: could not load ntdll.so: /home/creativegrey/.steam/root/compatibilitytools.d/Proton-6.8-GE-2/files/lib/wine/ntdll.so: cannot open shared object file: No such file or directory

Matoking commented 3 years ago

OK, it seems that Proton-6.8-GE-2 requires a specific Steam Runtime installation, which was not enabled by Protontricks. I've pushed a bug fix to custom_proton_runtime branch that should hopefully solve this issue. Could you check if it solves the issue?

If you installed Protontricks using pipx, the following should let you install the fix:

pipx install git+https://github.com/Matoking/protontricks.git@custom_proton_runtime
CreativeGrey commented 3 years ago

That does seem to have fixed the ntdll.so issue, now the only issue I can find is something about binding directories that are located under "/usr"

protontricks (WARNING): Running Steam Runtime using bwrap containerization. This is an experimental feature and it may still be incompatible in some situations. If any problems arise, please try running the command again using the --no-bwrap flag and make an issue report if the problem only occurs when bwrap is in use. Executing mkdir -p /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670

warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.

Using winetricks 20210206-next - sha256sum: 7cc2f1a44854b8449270cb46890d6cf3c9dff190ac40729ae4eb817b290df8f5 with wine-6.8 (Staging) and WINEARCH=win64 Executing w_do_call d3dcompiler_43 Executing mkdir -p /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670

warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.

Executing load_d3dcompiler_43

warning: Working around wine bug 24013 -- Native d3dcompiler_43 may cause some d3d10 apps to crash, see https://bugs.winehq.org/show_bug.cgi?id=24013

Executing cabextract -q -d /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/dosdevices/c:/windows/temp -L -F d3dcompiler_43x86 /home/creativegrey/.cache/winetricks/directx9/directx_Jun2010_redist.exe pressure-vessel-wrap[14402]: W: Binding directories that are located under "/usr/" is not supported! Executing cabextract -q -d /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/dosdevices/c:/windows/syswow64 -L -F d3dcompiler_43.dll /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/dosdevices/c:/windows/temp/jun2010_d3dcompiler_43_x86.cab pressure-vessel-wrap[14697]: W: Binding directories that are located under "/usr/" is not supported! /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/dosdevices/c:/windows/temp/jun2010_d3dcompiler_43_x86.cab: WARNING; possible 5960 extra bytes at end of file. Executing cabextract -q -d /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/dosdevices/c:/windows/temp -L -F d3dcompiler_43x64 /home/creativegrey/.cache/winetricks/directx9/directx_Jun2010_redist.exe pressure-vessel-wrap[14991]: W: Binding directories that are located under "/usr/" is not supported! Executing cabextract -q -d /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/dosdevices/c:/windows/system32 -L -F d3dcompiler_43.dll /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/dosdevices/c:/windows/temp/jun2010_d3dcompiler_43_x64.cab pressure-vessel-wrap[15285]: W: Binding directories that are located under "/usr/" is not supported! /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670/pfx/dosdevices/c:/windows/temp/jun2010_d3dcompiler_43_x64.cab: WARNING; possible 5960 extra bytes at end of file. Using native override for following DLLs: d3dcompiler_43 Executing /home/creativegrey/.cache/protontricks/proton/Proton-6.8-GE-2/bin/wine regedit C:\windows\Temp\override-dll.reg pressure-vessel-wrap[15579]: W: Binding directories that are located under "/usr/" is not supported! wineserver: using server-side synchronization. 002c:fixme:winediag:LdrInitializeThunk wine-staging 6.8 is a testing version containing experimental patches. 002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org. 005c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 005c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0080:fixme:netprofm:connection_point_Advise 008B58F8, 00FC76EC, 00FC7754 - semi-stub 0080:fixme:netprofm:list_manager_GetConnectivity 008B58D8, 0180FBA0 007c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 007c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0098:fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot 0098:fixme:toolhelp:Heap32ListFirst : stub 0098:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 00b0:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 00b0:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 002c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 002c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 00e8:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 00e8:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0134:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0134:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 013c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 013c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. Executing /home/creativegrey/.cache/protontricks/proton/Proton-6.8-GE-2/bin/wine64 regedit C:\windows\Temp\override-dll.reg pressure-vessel-wrap[15953]: W: Binding directories that are located under "/usr/" is not supported! wineserver: using server-side synchronization. 002c:fixme:winediag:LdrInitializeThunk wine-staging 6.8 is a testing version containing experimental patches. 002c:fixme:winediag:LdrInitializeThunk Please mention your exact version when filing bug reports on winehq.org. 005c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 005c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0080:fixme:netprofm:connection_point_Advise 008B58F8, 00FC773C, 00FC77A4 - semi-stub 0080:fixme:netprofm:list_manager_GetConnectivity 008B58D8, 0180FBA0 007c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 007c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0090:fixme:toolhelp:CreateToolhelp32Snapshot Unimplemented: heap list snapshot 0090:fixme:toolhelp:Heap32ListFirst : stub 0090:fixme:ntdll:NtQuerySystemInformation info_class SYSTEM_PERFORMANCE_INFORMATION 00b0:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 00b0:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 002c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 002c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 00e8:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 00e8:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0134:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0134:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 013c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 013c:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. Executing w_do_call d3dcompiler_47 Executing mkdir -p /mnt/a6d1e6a8-9969-4870-ab3f-91de82998e0b/Steam Games/steamapps/compatdata/1328670

warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.

Matoking commented 3 years ago

The line

pressure-vessel-wrap[15285]: W: Binding directories that are located under "/usr/" is not supported!

is just a warning and should not affect behavior unless your Steam library is located under /usr. This does not appear to be the case, but if it was, it would need to be moved since Steam Runtime/Proton doesn't support it. I've pushed a change to the custom_proton_runtime to prevent Protontricks from trying to mount the directory unnecessarily which should fix those warnings.


Other than that, are you able to install d3dcompiler_43 and d3dcompiler_47 as normal? The output for d3dcompiler_43 looks usual aside from the warnings; those necessarily don't mean the commands are failing. The output for d3dcompiler_47 appears to be missing, so did the command stop there instead of continuing the installation?

You could also do a quick test by running the command protontricks 1328670 winecfg; this should open a configuration window for Wine if it's working properly.

CreativeGrey commented 3 years ago

Looking back at it yeah, i think it all worked correctly, but I guess this just means that my problem with Mass Effect is something else, oh well.

Thanks for all the help!

Matoking commented 3 years ago

Thanks for the help as well! I'll merge the fix into master and close this issue.