https://bugs.winehq.org/show_bug.cgi?id=49412
GloriousEggroll@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |GloriousEggroll@gmail.com
--- Comment #23 from GloriousEggroll@gmail.com --- Created attachment 71717 --> https://bugs.winehq.org/attachment.cgi?id=71717 updated syscall patch
Here is an updated version of the syscall patch from https://bugs.winehq.org/show_bug.cgi?id=49412#c20
I currently have LoL working on wine 7.0 + staging using the following patches/changes in order:
1. Apply staging:
../wine-staging/patches/patchinstall.sh DESTDIR="." --all
2. Apply the attached syscall patch
3. Apply rebased 'Alternative patch by using a fake cs segment' patch from: https://bugs.winehq.org/show_bug.cgi?id=47198#c107
4. Apply LoL client update failure fix patch from: https://bugs.winehq.org/show_bug.cgi?id=51687#c6
5. Apply (new) ws2_32 patch for more reliable client interface connectivity/functionality. Without this patch sometimes either the riot client fails to load "my games' section due to a connectivity error, or sometimes the league client itself fails to connect after logging in. With this patch I was able to connect reliably every time:
https://github.com/alesliehughes/alesliehughes-wine-staging/tree/master/patc...
6. The main issue is LoL needs a 5 minute wait script while it waits for a port to open, and needs abi.vsyscall32=0. The below 'launchhelper.sh' script is used in lutris. It calls the syscall_check.sh first to make sure abi.vsyscall32=0 is set and promps the user if not. Then it performs the 5 minute wait loop while waiting for the League Client's port to open:
https://lutris.nyc3.digitaloceanspaces.com/games/league-of-legend/launchhelp... https://lutris.nyc3.digitaloceanspaces.com/games/league-of-legend/syscall_ch...
The script requires zenity for the vsyscall check prompts and openssl for the port check.
Details on why the "wait-for-port-to-open" launchhelper.sh script is needed are as noted:
https://www.reddit.com/r/leagueoflinux/comments/j07yrg/starting_the_client_s...
"the gist is that the LeagueClientUx tries to wait for an SSL response on a port opened by the parent process. However, with the latest update, the parent process takes forever to open that port (~2m), so that the LeagueClientUx hits a timeout (~1m). The simple fix is to just suspend the LeagueClientUx process until that port responds, so I wrote a little script for that."
7. (optional) If using Garena (with DXVK), the Garena client needs vulkan childwindow patches from here to prevent rendering a black screen (posting sources for reference):
https://bugs.winehq.org/show_bug.cgi?id=45277#attach_70100
However they needed to be rebased onto 7.0 release, which the author has done here: https://github.com/rbernon/wine/commits/wip/vulkan-child/v1
Then lastly, this also needed to be rebased on top of staging (only minor changes luckily), which I've done here:
https://github.com/GloriousEggroll/wine-ge-custom/blob/master/patches/wine-h...
8. (optional) If using Garena, you also need to install vcrun2013 via winetricks, otherwise you will hit:
https://bugs.winehq.org/show_bug.cgi?id=47375
wine: Call from 7B0110C6 to unimplemented function msvcr120.dll.?_Schedule@_StructuredTaskCollection@details@Concurrency@@QAEXPAV_UnrealizedChore@23@@Z, aborting
Some additional notes:
I add a few performance related patches ported over from proton to my build, which can be found in the following script:
https://github.com/GloriousEggroll/wine-ge-custom/blob/master/patches/proton...
** For clarification, the following is the issue **: ------------ Without the port wait script, when you launch LoL from the Riot launcher, the "League of Legends" splash logo will come up for a period of time, then die and fall back to the Riot launcher.
The reason this happens has been clarified from the reddit post noted above:
"the LeagueClientUx tries to wait for an SSL response on a port opened by the parent process. However, with the latest update, the parent process takes forever to open that port (~2m), so that the LeagueClientUx hits a timeout (~1m)."
Ex.:
$ pidof LeagueClientUx.exe 33185
$ xargs -0 < /proc/33185/cmdline | sed -n 's/.*--app-port=([[:digit:]]*).*/\1/p' 41563
So now we spam checking waiting for the port to open with openssl, this is what takes a very long time:
$ openssl s_client -connect :41563 <<< Q 140003742518720:error:0200206F:system library:connect:Connection refused:crypto/bio/b_sock2.c:110: 140003742518720:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111: 140003742518720:error:0200206F:system library:connect:Connection refused:crypto/bio/b_sock2.c:110: 140003742518720:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111: connect:errno=111
$ openssl s_client -connect :41563 <<< Q 140101605764544:error:0200206F:system library:connect:Connection refused:crypto/bio/b_sock2.c:110: 140101605764544:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111: 140101605764544:error:0200206F:system library:connect:Connection refused:crypto/bio/b_sock2.c:110: 140101605764544:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111: connect:errno=111
$ openssl s_client -connect :41563 <<< Q 139781517258176:error:0200206F:system library:connect:Connection refused:crypto/bio/b_sock2.c:110: 139781517258176:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111: 139781517258176:error:0200206F:system library:connect:Connection refused:crypto/bio/b_sock2.c:110: 139781517258176:error:2008A067:BIO routines:BIO_connect:connect error:crypto/bio/b_sock2.c:111: connect:errno=111
Until finally:
$ openssl s_client -connect :41563 <<< Q ... CONNECTED(00000003) depth=1 C = US, ST = California, L = Santa Monica, O = Riot Games, OU = LoL Game Engineering, CN = LoL Game Engineering Certificate Authority, emailAddress = gametechnologies@riotgames.com verify error:num=19:self signed certificate in certificate chain verify return:1 depth=1 C = US, ST = California, L = Santa Monica, O = Riot Games, OU = LoL Game Engineering, CN = LoL Game Engineering Certificate Authority, emailAddress = gametechnologies@riotgames.com verify return:1 depth=0 CN = rclient verify return:1 ...
$ netstat -neopa | grep -i 41563 | grep -i listen tcp 0 0 127.0.0.1:41563 0.0.0.0:* LISTEN 1000 263958 31029/wineserver off (0.00/0/0) ------------
** In case someone wants to assist with debugging the port issue without going through the patching hassle, the entire pre-patched wine branch can be found here, ready to compile**: ------------ https://github.com/gloriouseggroll/wine/tree/ge-7.0-1-lol
Just compile it then use it alongside DXVK when running the Riot Launcher and you should be able to reproduce the issue. ------------