Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes for Proton 6.3-3...Commits to revert that cause some games to instantly terminate on launch. #4808

Closed
rboxeur opened this issue May 5, 2021 · 12 comments

Comments

@rboxeur
Copy link

rboxeur commented May 5, 2021

Affected Proton version 6.3-3

To fix it

cd /opt/Sources/Proton-Experimental-6.3/wine/
git format-patch -r -n3 a80652ca4c8d69591e3242019e487502510323ea
patch -R -Np1 -i /opt/Sources/Proton-Experimental-6.3/wine/0001-server-Do-not-cancel-process-sigkill-in-kill_process.patch
patch -R -Np1 -i /opt/Sources/Proton-Experimental-6.3/wine/0002-server-Add-sigkill-timer-even-if-msg_fd-is-closed.patch
patch -R -Np1 -i /opt/Sources/Proton-Experimental-6.3/wine/0003-ntdll-Close-server-socket-before-calling-exit.patch

I opened a ticket on Kron4ek's repository too...His builds are ok now after he fixed them too

https://github.com/Kron4ek/Wine-Builds/releases/tag/6.3-3-proton

@kisak-valve
Copy link
Member

kisak-valve commented May 5, 2021

Hello @rboxeur, please also note which games were tested and copy your system information from Steam (Steam -> Help -> System Information) into a gist, then include a link to the gist in this issue report.

@Sebastriani
Copy link

I was going to start a thread about this! I have the same problem, most of my games were running perfect with 6.3-2, now with 6.3-3 no even 1 from the ones I tested launched and I had to fall back to 5.13-6

@ptosi
Copy link

ptosi commented May 8, 2021

This might come from an issue I've noticed with the version of Wine's shared object loader shipped with Proton 6.3 as it seems to always load at address 0x0.

For example, given the following program:

#include <stdio.h>
int main() { printf("hi\n"); }

we get:

$ winegcc hello.c -o hello
$ export WINEDEBUG=+loaddll
$ export WINE=$HOME/.local/share/Steam/steamapps/common/Proton\ 6.3/dist/bin/wine64
$ $WINE --version
wine-6.3
$ $WINE hello.exe.so
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\wineboot.exe" at 0000000140000000: builtin
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\kernelbase.dll" at 000000007B000000: builtin
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\kernel32.dll" at 000000007B600000: builtin
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\ucrtbase.dll" at 00000003AF670000: builtin
[ ... more windows libs ... ]
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\shlwapi.dll" at 00000002E3540000: builtin
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\shell32.dll" at 00007FE14FB90000: builtin
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\imm32.dll" at 00000003AFD00000: builtin
0024:trace:loaddll:build_module Loaded L"Z:\\path\\to\\hello.exe" at 00007F8422840000: builtin
0024:trace:loaddll:load_so_dll Loaded L"\\??\\Z:\\path\\to\\hello.exe.so" at 0000000000000000: builtin
segmentation fault (core dumped)  $WINE hello.exe.so

where the segfault probably comes from accessing the content of the mapped SO i.e. the RAM page at address 0x0.

Reverting to Proton 5.13 makes the program run (notice the valid load address from load_so_dll, this time):

$ export WINE=$HOME/.local/share/Steam/steamapps/common/Proton\ 5.13/dist/bin/wine64
$ $WINE --version
wine-5.13-789-gc14054e6923
$ $WINE hello.exe.so
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\ntdll.dll" at 000000007BC00000: builtin
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\kernelbase.dll" at 000000007B000000: builtin
002c:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\kernel32.dll" at 000000007B610000: builtin
[...]
0024:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\ntdll.dll" at 000000007BC00000: builtin
0024:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\kernelbase.dll" at 000000007B000000: builtin
0024:trace:loaddll:build_module Loaded L"C:\\windows\\system32\\kernel32.dll" at 000000007B610000: builtin
0024:trace:loaddll:build_module Loaded L"Z:\\path\\to\\hello.exe" at 00007F1D2E0E0000: builtin
0024:trace:loaddll:load_so_dll Loaded L"\\??\\Z:\\path\\to\\hello.exe.so" at 00007F1D2E0E0000: builtin
hi

I'm not sure how helpful this is and/or if it's actually related to those issues. This seems to be such a central bug that I tend to believe it must be with my setup as I would expect something like this to be caught by their regression tests.

@rboxeur
Copy link
Author

rboxeur commented May 8, 2021

I was going to start a thread about this! I have the same problem, most of my games were running perfect with 6.3-2, now with 6.3-3 no even 1 from the ones I tested launched and I had to fall back to 5.13-6

I don't use Proton but I know while submitting a ticket on Kron4ek's repository then he fixed it..

Here is the ticket I opened this week

Kron4ek/Wine-Builds#36

Kron4ek's build for Proton-6.3-3 has only Wine with the expected fixes within

If you are not afraid by terminal then I will recommend to do that or nagivate to the location where your Proton-6.3-3 is located to play the game

cd /home/..../steam/...compatibility/...

Try to go where there will be a subfolder called 'dist'. This is the subfolder that comes with Proton-6.3-3. It is supposed to content Wine with subfolders named 'bin','lib' and so on

Then rename it to something 'dist' to 'dist_orig'. Name is not really important

mv dist dist_orig

You can do that through your own system too

Then download file located here
https://github.com/Kron4ek/Wine-Builds/releases/download/6.3-3-proton/wine-6.3-3-proton-amd64.tar.xz
to the same locaion where your old dist folder is located
Then decompress it and rename it
from
'wine-6.3-3-proton-amd64'
to 'dist'

Then restart your steam.

@frostworx
Copy link

Wow, thanks a lot for this fix. I'm pretty sure this is the main problem for all those "Proton doesn't work anymore" threads on reddit.
Just wanted to debug why Vortex doesn't start in a custom wineprefix and can confirm that above patched package fixes it.
Also, great to see Kron4ek provides wine and proton packages. Will add support for them at once in my launcher :)

@Kron4ek
Copy link

Kron4ek commented May 10, 2021

This issue is reproducible at least with Factory Town, what is interesting is that the game works when launched from within Steam with Proton 6.3-3, but when i launch it without Steam using the same Proton version (doesn't matter if it's the official build or a manually compiled build), it get instantly terminated. And as stated above, reverting three specific commits fixes the issue.

p.s. Factory Town is DRM-Free and works even without Steam.

@rboxeur
Copy link
Author

rboxeur commented May 10, 2021

This is not related to game only. Even a simple exe like ffplay.exe (video player provided with FFmpeg) failed to launch a simple video

Here is an outdated video based on your old build without the fix (before you updated it) versus a build with the fix

https://youtu.be/4TV7axVnI8A

Build without fix = failure
Build with fix = success

@gofman
Copy link

gofman commented May 10, 2021

The issue itself is clear but the examples of real game(s) which fail when run from Steam in normal way could be helpful as it would allow to test the fix and include it in Proton update. Just reverting the commits in Proton is unlikely an option as the commit does fix the specific issues with some games being run normally from Steam.

@aleksei-korolev
Copy link

aleksei-korolev commented May 10, 2021

@gofman I am not sure if this is a related issue, but Deep Rock Galactic crashes on my PC with proton 6.3.3. It always crashes after I finished a game level and return to the lobby level (AKA Space Rig). Sometimes it crashes after it loads a game level. After any crash, it always crashes on launch after the loading screen (which loads you into the lobby level) until I verify game files through Steam.

I run the game with WINEDLLOVERRIDES="mfplay.dll=d" %command% launch options.

Let me know what additional information would you need.

@aeikum
Copy link
Collaborator

aeikum commented May 13, 2021

This issue is hopefully fixed in the Proton 6.3-4 RC candidate, see #4821.

@kisak-valve kisak-valve added the Need Retest Request to retest an issue with vanilla Proton label May 13, 2021
@frostworx
Copy link

Thanks for the quick fix! I can confirm that at least an unofficial Vortex installation in a custom wineprefix starts correctly using proton-6.3-4-rc1, which failed with proton-6.3-3 (maybe not related, but it starts much faster when started from outside steam)

@aeikum
Copy link
Collaborator

aeikum commented May 14, 2021

Thanks everyone for reporting and testing. 6.3-4 is released now, so I'll close this issue.

@aeikum aeikum closed this as completed May 14, 2021
@kisak-valve kisak-valve removed the Need Retest Request to retest an issue with vanilla Proton label May 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants