kyechou / leagueoflegends

League of Legends install and launch wrapper for Linux
https://www.leagueoflegends.com
GNU General Public License v3.0
288 stars 23 forks source link

Cannot get into a game #83

Closed Gruetzig closed 1 year ago

Gruetzig commented 1 year ago

System information

If your issue is related to graphics display, please attach the output of vulkaninfo --summary. I do not know if it is, but I included vulkaninfo --summary in my pastebin.

Describe the issue

When starting the game, not the launcher, it immediately crashes with an error I attached below, tried both ranked(bruh) and practice tool.

Reinstalled twice with no luck, worked just fine yesterday, never used the lutris version.

Steps to reproduce

https://pastebin.com/BS7yBiru pastebin with vulkaninfo --summary and leagueoflegends -v start

  1. Run command leagueoflegends -v start
  2. Go into a game
  3. See critical error

Screenshots

image

BlankSpruce commented 1 year ago

I've checked the "Restore defaults" hint that appeared on subreddit and while it doesn't make game playable in any manner seemingly it MIGHT HAVE affected something. In particular, not all League of Legends.exe starts lead to known error. Some either immediately terminate application (no "critical error" dialog) or leave process in zombie state that needs to be manually killed. Out of couple tries I've collected these various logs:

0534:fixme:heap:EnumSystemFirmwareTables (0x4649524d, 0000000000000000, 0)
0534:err:seh:dispatch_exception unknown exception (code=c0000420) raised
0534:fixme:process:NtQueryInformationProcess ProcessCookie (0xffffffffffffffff,0x180b01650,0x00000004,(nil)) stub
0534:err:seh:call_stack_handlers invalid frame 0000000000116BA9 (0000000000022000-0000000000120000)
0534:err:seh:NtRaiseException Exception frame is not in stack limits => unable to dispatch exception.
11fc:fixme:heap:EnumSystemFirmwareTables (0x4649524d, 0000000000000000, 0)
11fc:err:seh:dispatch_exception unknown exception (code=c0000420) raised
11fc:fixme:process:NtQueryInformationProcess ProcessCookie (0xffffffffffffffff,0x180b01650,0x00000004,(nil)) stub
11fc:err:virtual:virtual_setup_exception stack overflow 2384 bytes in thread 11fc addr 0x17005a229 stack 0x206b0 (0x20000-0x21000-0x120000)
0880:fixme:heap:EnumSystemFirmwareTables (0x4649524d, 0000000000000000, 0)
0880:err:seh:dispatch_exception unknown exception (code=c0000420) raised
0880:fixme:process:NtQueryInformationProcess ProcessCookie (0xffffffffffffffff,0x180b01650,0x00000004,(nil)) stub
0880:err:virtual:virtual_setup_exception nested exception on signal stack in thread 0880 addr 0x7f9ff1e459b7 stack 0x67fef3a0
0b30:fixme:heap:EnumSystemFirmwareTables (0x4649524d, 0000000000000000, 0)
0b30:err:seh:dispatch_exception unknown exception (code=c0000420) raised
0b30:fixme:process:NtQueryInformationProcess ProcessCookie (0xffffffffffffffff,0x180b01650,0x00000004,(nil)) stub
0b30:err:seh:NtRaiseException Unhandled exception code c0000005 flags 0 addr 0x141294666

These point to stack overflow and/or segfault kind of errors.

We could eliminate the possibility that "Restore defaults" has any impact at all here if someone tried multiple tries to see if some of the behaviours above are seen also without "Restore defaults". I honestly don't think it should matter at all having in mind that reinstallation should have exact same effect but truthfully before "Restore defaults" I had 100% ratio of appeareance of "Critical error" dialogs and none of the above logs.

s-b-repo commented 1 year ago

I've checked the "Restore defaults" hint that appeared on subreddit and while it doesn't make game playable in any manner seemingly it MIGHT HAVE affected something. In particular, not all League of Legends.exe starts lead to known error. Some either immediately terminate application (no "critical error" dialog) or leave process in zombie state that needs to be manually killed. Out of couple tries I've collected these various logs:

0534:fixme:heap:EnumSystemFirmwareTables (0x4649524d, 0000000000000000, 0)
0534:err:seh:dispatch_exception unknown exception (code=c0000420) raised
0534:fixme:process:NtQueryInformationProcess ProcessCookie (0xffffffffffffffff,0x180b01650,0x00000004,(nil)) stub
0534:err:seh:call_stack_handlers invalid frame 0000000000116BA9 (0000000000022000-0000000000120000)
0534:err:seh:NtRaiseException Exception frame is not in stack limits => unable to dispatch exception.
11fc:fixme:heap:EnumSystemFirmwareTables (0x4649524d, 0000000000000000, 0)
11fc:err:seh:dispatch_exception unknown exception (code=c0000420) raised
11fc:fixme:process:NtQueryInformationProcess ProcessCookie (0xffffffffffffffff,0x180b01650,0x00000004,(nil)) stub
11fc:err:virtual:virtual_setup_exception stack overflow 2384 bytes in thread 11fc addr 0x17005a229 stack 0x206b0 (0x20000-0x21000-0x120000)
0880:fixme:heap:EnumSystemFirmwareTables (0x4649524d, 0000000000000000, 0)
0880:err:seh:dispatch_exception unknown exception (code=c0000420) raised
0880:fixme:process:NtQueryInformationProcess ProcessCookie (0xffffffffffffffff,0x180b01650,0x00000004,(nil)) stub
0880:err:virtual:virtual_setup_exception nested exception on signal stack in thread 0880 addr 0x7f9ff1e459b7 stack 0x67fef3a0
0b30:fixme:heap:EnumSystemFirmwareTables (0x4649524d, 0000000000000000, 0)
0b30:err:seh:dispatch_exception unknown exception (code=c0000420) raised
0b30:fixme:process:NtQueryInformationProcess ProcessCookie (0xffffffffffffffff,0x180b01650,0x00000004,(nil)) stub
0b30:err:seh:NtRaiseException Unhandled exception code c0000005 flags 0 addr 0x141294666

These point to stack overflow and/or segfault kind of errors.

We could eliminate the possibility that "Restore defaults" has any impact at all here if someone tried multiple tries to see if some of the behaviours above are seen also without "Restore defaults". I honestly don't think it should matter at all having in mind that reinstallation should have exact same effect but truthfully before "Restore defaults" I had 100% ratio of appeareance of "Critical error" dialogs and none of the above logs.

its has to do with memory management and firmware

EnumSystemFirmwareTables enumarate sytem firmware tables

Structured Exception Handling

it points some memory or process in the code causing a issue some tpye of heap memory issue

s-b-repo commented 1 year ago

It seems to be related. If you enable window mode, while you still can't play a game, wine no longer displays a crash message. Edit: Sometimes it still does.

vulkan isssue

X11DRV_vkCreateWin32SurfaceKHR Failed to allocate client window vulkan, a graphics API. The error message indicates that the function "vkCreateWin32SurfaceKHR" failed to allocate a client window for the specified window handle.

BlankSpruce commented 1 year ago

Interesting discovery. When I run with WINEDEBUG=warn+seh game doesn't crash and actually load to the beginning to immediately freeze visually - background music can be heard for instance: image Game doesn't start paused, it just happened after I've killed it the first time. Logs show tons of access violation errors around the log with code=c0000420:

05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05e4:err:seh:dispatch_exception unknown exception (code=c0000420) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_BREAKPOINT exception (code=80000003) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
05d0:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised

Game isn't playable at all but that's at least some progress.

EDIT: Actually it doesn't freeze immediately always, on some runs I have around 1 to 2 seconds of rendering. Since game is paused I only see this progress bar rendering.

mkgiga commented 1 year ago

Game isn't playable at all but that's at least some progress.

EDIT: Actually it doesn't freeze immediately always, on some runs I have around 1 to 2 seconds of rendering. Since game is paused I only see this progress bar rendering.

So I've been having the same exception thrown as everyone else with code=0000420 so I thought I'd run the game with WINEDEBUG=warn+seh as well, and this is what I get. (running this repos installer script)

0b4c:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b4c, blocked by 0b40, retrying (60 sec)
0b50:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b50, blocked by 0b40, retrying (60 sec)
0b54:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b54, blocked by 0b40, retrying (60 sec)
0b58:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b58, blocked by 0b40, retrying (60 sec)
0b5c:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b5c, blocked by 0b40, retrying (60 sec)

I know we're way past the point of realizing that memory allocation/reading is going wrong somewhere but I hope this information helps whoever's at the forefront of debugging this mess.

Specs: OS: Arch Linux CPU: Intel Core i7-6700k GPU: NVIDIA GeForce 980 Ti GPU Driver: Proprietary

noah1510 commented 1 year ago

How did you get the game to pause? When I tried inputting anything the game completly crashed.

polkaulfield commented 1 year ago

Game isn't playable at all but that's at least some progress. EDIT: Actually it doesn't freeze immediately always, on some runs I have around 1 to 2 seconds of rendering. Since game is paused I only see this progress bar rendering.

So I've been having the same exception thrown as everyone else with code=0000420 so I thought I'd run the game with WINEDEBUG=warn+seh as well, and this is what I get. (running this repos installer script)

0b4c:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b4c, blocked by 0b40, retrying (60 sec)
0b50:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b50, blocked by 0b40, retrying (60 sec)
0b54:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b54, blocked by 0b40, retrying (60 sec)
0b58:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b58, blocked by 0b40, retrying (60 sec)
0b5c:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b5c, blocked by 0b40, retrying (60 sec)

I know we're way past the point of realizing that memory allocation/reading is going wrong somewhere but I hope this information helps whoever's at the forefront of debugging this mess.

Specs: OS: Arch Linux CPU: Intel Core i7-6700k GPU: NVIDIA GeForce 980 Ti GPU Driver: Proprietary

Found this codeweavers post where a wine dev fixes an almost exactly identical bug in another game (seh exception in dlls/ntdll/loader.c): https://www.codeweavers.com/blog/aeikum+retired/2022/6/3/debugging-wine-with-x86-hardware-debug-registers

Ill try to look into it but for someone familiar with wine development this may help a lot

dconz13 commented 1 year ago

Which patches are applied to wine staging 7.05 for league to work? Maybe we can get around the issue by applying similar patches to the latest version of wine staging?

kyechou commented 1 year ago

@dconz13 The patches are here: https://github.com/GloriousEggroll/wine-ge-custom/tree/67235b2be693a2274405253602c59e4f800ef003

polkaulfield commented 1 year ago

These are the old patches, I'm trying the one from the post (It isn't applied to upstream AFAIK)

--- a/dlls/ntdll/path.c
+++ b/dlls/ntdll/path.c
@@ -519,7 +519,7 @@ static ULONG get_full_path_helper(LPCWSTR name, LPWSTR buffer, ULONG size)

     RtlAcquirePebLock();

-    if (NtCurrentTeb()->Tib.SubSystemTib)  /* FIXME: hack */
+    if (0 && NtCurrentTeb()->Tib.SubSystemTib)  /* FIXME: hack */
         cd = &((WIN16_SUBSYSTEM_TIB *)NtCurrentTeb()->Tib.SubSystemTib)->curdir.DosPath;
     else
         cd = &NtCurrentTeb()->Peb->ProcessParameters->CurrentDirectory.DosPath;

Its still compiling, I'll update when I check if this fixes anything.

kyechou commented 1 year ago

@ceselder I was answering the question from @dconz13. The game still doesn't work.

ceselder commented 1 year ago

@ceselder I was answering the question from @dconz13. The game still doesn't work.

Oh my bad. ):

noah1510 commented 1 year ago

if (0 && NtCurrentTeb()->Tib.SubSystemTib)

Doesn't this just disable the if part 🤔

ceselder commented 1 year ago

if (0 && NtCurrentTeb()->Tib.SubSystemTib)

Doesn't this just disable the if part thinking

yes

BlankSpruce commented 1 year ago

How did you get the game to pause? When I tried inputting anything the game completly crashed.

I believe this is the feature of Practice Tool where if application terminates (crash or killed, doesn't matter) after the game has been "started" (as in clock starts ticking) the server will pause the game. In my case first non-crash lead to non-yet-paused game. After game has visually frozen I've killed League of Legends.exe and retried again. On second (and any consecutive try within the session) I'd see what I've posted above.

polkaulfield commented 1 year ago

Update!

These are the old patches, I'm trying the one from the post (It isn't applied to upstream AFAIK)

--- a/dlls/ntdll/path.c
+++ b/dlls/ntdll/path.c
@@ -519,7 +519,7 @@ static ULONG get_full_path_helper(LPCWSTR name, LPWSTR buffer, ULONG size)

     RtlAcquirePebLock();

-    if (NtCurrentTeb()->Tib.SubSystemTib)  /* FIXME: hack */
+    if (0 && NtCurrentTeb()->Tib.SubSystemTib)  /* FIXME: hack */
         cd = &((WIN16_SUBSYSTEM_TIB *)NtCurrentTeb()->Tib.SubSystemTib)->curdir.DosPath;
     else
         cd = &NtCurrentTeb()->Peb->ProcessParameters->CurrentDirectory.DosPath;

Its still compiling, I'll update when I check if this fixes anything.

This patch makes the critical error window disappear. Game just silently crashes.

Output of leagueoflegends -v start

INFO | DRIVER:               [0] AMD Radeon RX 580 Series (RADV POLARIS10)  
DEBUG | DRIVER:   Copying old device 0 into new device 0
09e8:err:seh:dispatch_exception unknown exception (code=c0000420) raised

The (code=c0000420) error is the only one that remains when not adding any debug flag. Seems that theres something else to patch.

@kyechou told me that some logs pointed to /dlls/ntdll/unix/signal_x68_64.c

The patch we use now instead of the custom glibc is iirc this one: LoL-abi.vsyscall32-alternative_patch_by_using_a_fake_cs_segment.patch

Reading through the code I have noticed that it only applies to /dlls/ntdll/unix/signal_i386.c, that makes sense, game was 32bit before.

We need someone to port that patch to /dlls/ntdll/unix/signal_x68_64.c and check if it fixes the issue. At least the critical error window bug is gone now...

BlankSpruce commented 1 year ago

Game isn't playable at all but that's at least some progress. EDIT: Actually it doesn't freeze immediately always, on some runs I have around 1 to 2 seconds of rendering. Since game is paused I only see this progress bar rendering.

So I've been having the same exception thrown as everyone else with code=0000420 so I thought I'd run the game with WINEDEBUG=warn+seh as well, and this is what I get. (running this repos installer script)

0b4c:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b4c, blocked by 0b40, retrying (60 sec)
0b50:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b50, blocked by 0b40, retrying (60 sec)
0b54:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b54, blocked by 0b40, retrying (60 sec)
0b58:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b58, blocked by 0b40, retrying (60 sec)
0b5c:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b5c, blocked by 0b40, retrying (60 sec)

I know we're way past the point of realizing that memory allocation/reading is going wrong somewhere but I hope this information helps whoever's at the forefront of debugging this mess. Specs: OS: Arch Linux CPU: Intel Core i7-6700k GPU: NVIDIA GeForce 980 Ti GPU Driver: Proprietary

Found this codeweavers post where a wine dev fixes an almost exactly identical bug in another game (seh exception in dlls/ntdll/loader.c): https://www.codeweavers.com/blog/aeikum+retired/2022/6/3/debugging-wine-with-x86-hardware-debug-registers

Ill try to look into it but for someone familiar with wine development this may help a lot

I don't want to kill the mood but the devil is in the details. Unless you tried running League of Legends.exe under winedbg to confirm that code in dlls/ntdll/loader.c is in fact reason for assertion failure we don't have strong reasons to believe that issue described in your link is related to our problem.

Additionally to be somewhat more confident on correlation you'd have to make sure that tid (first four characters before :err) of log:

0b4c:err:sync:RtlpWaitForCriticalSection section 000000017006B660 "../wine-lol/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0b4c, blocked by 0b40, retrying (60 sec)

matches that of dispatch_exception unknown exception.

polkaulfield commented 1 year ago

@BlankSpruce You are right, I'm getting the same behavior with that codeweavers patch. It was just luck that i didnt get the window the first run. Anyways I managed to run League of Legends.exe with winedbg. Here's the output:

WineDbg starting on pid 012c
0x0000000180350f71 stub+0x350f71: ret
Wine-dbg>c
0130:warn:seh:dispatch_exception EXCEPTION_ACCESS_VIOLATION exception (code=c0000005) raised
0x0000000170058735: ret
Wine-dbg>c
0130:warn:seh:dispatch_exception EXCEPTION_PRIV_INSTRUCTION exception (code=c0000096) raised
Unhandled exception: privileged instruction in 64-bit code (0x0000000145345040).
Register dump:
 rip:0000000145345040 rsp:000000000011fe38 rbp:0000000000000000 eflags:00010202 (  R- --  I   - - - )
 rax:000000017008a050 rbx:0000000000000000 rcx:0000000067ff0000 rdx:0000000145345000
 rsi:0000000000000000 rdi:0000000000000000  r8:0000000067ff0000  r9:00000000ffffffff r10:0000000000000000
 r11:0000000000000000 r12:0000000000000000 r13:0000000000000000 r14:0000000000000000 r15:0000000000000000
Stack dump:
0x000000000011fe38:  000000007b62c669 0000000000000000
0x000000000011fe48:  0000000000000000 0000000000000000
0x000000000011fe58:  0000000000000000 0000000000000000
0x000000000011fe68:  0000000170060093 0000000000000000
0x000000000011fe78:  0000000000000000 0000000000000000
0x000000000011fe88:  0000000000000000 0000000145345000
0x000000000011fe98:  0000000067ff0000 ffffffffffffffff
0x000000000011fea8:  000000017006b440 00000001700259c0
0x000000000011feb8:  0000000000000000 000000000011fea0
0x000000000011fec8:  0000000000000000 000000000011fe70
0x000000000011fed8:  0000000000000000 0000000000000000
0x000000000011fee8:  0000000000000000 0000000000000000
Backtrace:
=>0 0x0000000145345040 in league of legends (+0x5345040) (0x0000000000000000)
  1 0x000000007b62c669 ActivateActCtx+0x20ae9() in kernel32 (0x0000000000000000)
0x0000000145345040 league of legends+0x5345040: inb     %dx,%al

This ActivateActCtx function seems related...

kyechou commented 1 year ago

@BlankSpruce You are right, I'm getting the same behavior with that codeweavers patch. It was just luck that i didnt get the window the first run. Anyways I managed to run League of Legends.exe with winedbg. Here's the output:

...

This ActivateActCtx function seems related...

Is it possible to continue the execution or hit the ERROR_ASSERTION_FAILURE (0xC0000420) exception?

polkaulfield commented 1 year ago

Couldnt manage to do it sadly

Laci0503 commented 1 year ago
Backtrace:
=>0 0x0000000145345040 in league of legends (+0x5345040) (0x0000000000000000)
  1 0x000000007b62c669 ActivateActCtx+0x20ae9() in kernel32 (0x0000000000000000)
0x0000000145345040 league of legends+0x5345040: inb     %dx,%al

I'm no expert on wine, but isn't 'inb' a privilaged instruction that can only be run in kernelspace? I've never looked at how exactly wine works, but this caught my eye in the logs. EDIT: spelling

LucianoBatista commented 1 year ago

Seems that this new build of GE solve the problem, but I was not able to build on my own. https://github.com/GloriousEggroll/wine-ge-custom/tree/7.0-GE-LoL

Funestia commented 1 year ago

are you sure that it solves the problem? I still can't get into a game even after updating to https://github.com/GloriousEggroll/wine/tree/ge-lol-7.0.7

ceselder commented 1 year ago

are you sure that it solves the problem? I still can't get into a game even after updating to https://github.com/GloriousEggroll/wine/tree/ge-lol-7.0.7

Its not fixed for many people yeah. @kyechou can get into games though. I think it only works for him so far?

LucianoBatista commented 1 year ago

I was not able to test it. I'm justing passing the information I got from a Reddit thread.

https://www.reddit.com/r/leagueoflinux/comments/12cei7t/patch_137_feedback_megathread_transition_to_64bit/?utm_source=share&utm_medium=android_app&utm_name=androidcss&utm_term=1&utm_content=share_button

I was hopping for this to work 😕

codrinsah commented 1 year ago

Its not fixed for many people yeah. @kyechou can get into games though. I think it only works for him so far?

I wasn't able to find any particular release for ge-lol-7.0.7 yet, so I presume he managed to build from that branch locally and make it work.

ExistingExpert commented 1 year ago

Its not fixed for many people yeah. @kyechou can get into games though. I think it only works for him so far?

I wasn't able to find any particular release for ge-lol-7.0.7 yet, so I presume he managed to build from that branch locally and make it work.

Yup. He submitted a pull request to fix the error. This script will probably be updated then to fix issue here as well?

santiagosantos08 commented 1 year ago

This script will probably be updated then to fix issue here as well?

If the fix is already merged to wine-lol then you can build it yourself or wait for a binary release (takes a couple hours). This script doesn't take care of the installation by itself, it just checks if you are running wine from the right directory "opt/wine-lol" instead of the usual "/usr/bin".

The update will depend on whichever method you used to get it in the first place (M-reimer's AUR pkg, deb package, etc)

kyechou commented 1 year ago

Hi all, the PR did NOT solve all the issues. Please don't run it just yet.. (or at your own risk)

PalanixYT commented 1 year ago

@kyechou Could you post your PKGBUILD and launcher script?

kyechou commented 1 year ago

@PalanixYT I need to do some testing first. I was building wine out of my local dir. I'll probably post my pkgbuild later today if I get a chance.

PalanixYT commented 1 year ago

I've heard something about a launcher script. Can you post that?

kyechou commented 1 year ago

It's already updated, but again, it's not a solution.

(edit) here: https://github.com/kyechou/leagueoflegends/commit/2c5f02f8ecc53474a2f7d41ccf4c1e45e0a79800

kyechou commented 1 year ago

Please also check out the update comment: https://github.com/GloriousEggroll/wine-ge-custom/pull/9#issuecomment-1500896901

PalanixYT commented 1 year ago

Oh sorry, I didn't catch that. I've heard that you were using a custom script. There is also a person on reddit claiming you've made a binary for Arch Linux. https://www.reddit.com/r/leagueoflinux/comments/12cei7t/comment/jffnqhr/?utm_source=share&utm_medium=web2x&context=3 Anyways, thank you for your help

kyechou commented 1 year ago

@PalanixYT I just found a typo in the last commit. please pull again if you haven't done so.

kyechou commented 1 year ago

Status update

If we run the game with WINEDEBUG=fixme-all,trace+seh,trace+vulkan,trace+window, we can enter and play a match, which was tested through practice tool and verified by multiple people. [edit: This is talking about the new patches.] But without the tracing flags, a new exception occurs:

err:virtual:virtual_setup_exception stack overflow 2000 bytes in thread 0ab0 addr 0x1700349b0 stack

Note that the address 0x1700349b0 is the same reported from different people. We assume there might be data race between the wine threads causing the stack overflow exception.

At the moment it seems the PR (https://github.com/GloriousEggroll/wine-ge-custom/pull/9) ~does not make any difference except for the error messages produced~. (edit: It does make a difference for some people. The game crashes for them without the patch.) Either way, eventually someone (or Riot) would need to investigate the cause of the stack overflow exception.

Notes

Setting the debug tracing flags is not a fix but a temporary workaround for those who are addicted to the (wonderful) game, and it doesn't seem to work for everyone, so please try a few practice tool or AI matches first. For those who are interested, please follow this guide and proceed at your own risk.

Finally. Please comment on this issue only when there are actionable information or log messages. Thanks ❤

user3287 commented 1 year ago

For me it's different: With the latest AUR version I DO load into games, but it crashes after 1-3 minutes. Happy to provide logs on request. Edit: Oh, and the "WINEDEBUG=fixme-all,trace+seh,trace+vulkan,trace+window" fix seems to works partially; the game feels like it's lasting longer before crashing (unlike me in bed :c)

kyechou commented 1 year ago

@user6304 which wine version/patch set were you using? If it's from AUR then it's GE 7.0.5 without the patches. You may want to try the patched version following guide linked above, but still someone needs to fix it properly.

kyechou commented 1 year ago

[Note to self and others who're looking into the issue]

With the new patches and without the tracing flags, sometimes it shows:

0c08:err:seh:call_stack_handlers invalid frame 000000000013FC70 (0000000000022000-0000000000120000)
0c08:err:seh:NtRaiseException Exception frame is not in stack limits => unable to dispatch exception.

The exact error messages seem non-deterministic and dependent on individual setups and the wine compile-time flags. But so far they are all related to how the stack/frame pointers were manipulated. I haven't touched x86 or x64 asm for a long time, so it'd be helpful if anyone's interested in looking into this.

PalanixYT commented 1 year ago

've noticed that using the new leagueoflegends wrapper script I can join matches using 7.0.5.

Definite007 commented 1 year ago

've noticed that using the new leagueoflegends wrapper script I can join matches using 7.0.5. but are you able to play full match? If yes then share the script

mewkl commented 1 year ago

Can someone link a binary/(beta)release of this latest wine version so I can link it to my lutris install? I've never compiled wine before and this would be amazing help.

I could not manage to compile yesterday, kept getting the same error about it not finding the wine src directory, but it's kind of hard for me to figure it out since it seems to be inside a virtual machine and then again inside a container.

I felt like opening a separate issue/help thread would be kind of weird because the only reason I (and probably others) want to compile wine-ge-custom 7.0-GE-LoL is to get this fix ;D...

KJ2ME commented 1 year ago

I am using lutris-ge-lol-7.0-5 with Bottles adding WINEDEBUG=trace+seh to Environment Variables and this is my results:

Now with only test purposes and no other intentions I will play a lot of games :).

If someone need anything more from with my tests, let me know.

kyechou commented 1 year ago

Reminder:

Please comment on this issue only when there are actionable information or log messages.

This is not a support thread.

kylfp commented 1 year ago

moonshadow565 seems to have patched wine in a way to make the game work over on reddit. I linked his post and the AUR link to the wine version. I'm downloading and trying now. It'll probably be 25-30 mins for me to build and run.

https://www.reddit.com/r/leagueoflinux/comments/12gkfiu/patches_for_64bit_update/

https://aur.archlinux.org/packages/wine-lol-staging

kyechou commented 1 year ago

Thanks for the information @fattyre! Unfortunately it still doesn't seem to work for everyone. It worked for some though. (ref: https://github.com/GloriousEggroll/wine-ge-custom/pull/9)

kylfp commented 1 year ago

Ok so i tested everything out and seems to work well. I get this error in the log as I play though.

wine client error:688: write: Bad file descriptor wine client error:690: write: Bad file descriptor wine client error:548: write: Bad file descriptor wine client error:734: write: Bad file descriptor wine client error:bc0: write: Bad file descriptor wine client error:bb8: wine client error:b08: wine client error:124: write: Bad file descriptor

Is this of any use or concern?

kyechou commented 1 year ago

@fattyre I have no idea... but if it works it works :) Just curious. What's your CPU/GPU? Are you on amd?

Oh and by the way, did you disable the WINEDEBUG flags?

kylfp commented 1 year ago

@fattyre I have no idea... but if it works it works :) Just curious. What's your CPU/GPU? Are you on amd?

Oh and by the way, did you disable the WINEDEBUG flags?

I am on EndeavourOS CPU: AMD Ryzen 9 5900HS GPU: NVIDIA GeForce RTX 3060 Mobile / Max-Q

I did not disable any flags. Just downloaded the wine version and changed the launch script to use it.