[Bug 49412] Wine 5.10 breaks League Of Legends

WineHQ Bugzilla wine-bugs at winehq.org
Sat Jan 22 16:18:31 CST 2022


https://bugs.winehq.org/show_bug.cgi?id=49412

GloriousEggroll at gmail.com changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |GloriousEggroll at gmail.com

--- Comment #23 from GloriousEggroll at 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/patches/ws2_32-SIO_IDEAL_SEND_BACKLOG_QUERY

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/launchhelper.sh
https://lutris.nyc3.digitaloceanspaces.com/games/league-of-legend/syscall_check.sh

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_script/

"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-hotfixes/LoL/LoL-garena-childwindow.patch

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 at _StructuredTaskCollection@details at Concurrency@@QAEXPAV_UnrealizedChore at 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/protonprep-LoL.sh


** 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 at 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 at 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. 
------------

-- 
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.



More information about the wine-bugs mailing list