Closed Gruetzig closed 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.
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:
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.
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
How did you get the game to pause? When I tried inputting anything the game completly crashed.
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 withWINEDEBUG=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
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?
@dconz13 The patches are here: https://github.com/GloriousEggroll/wine-ge-custom/tree/67235b2be693a2274405253602c59e4f800ef003
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.
@ceselder I was answering the question from @dconz13. The game still doesn't work.
@ceselder I was answering the question from @dconz13. The game still doesn't work.
Oh my bad. ):
if (0 && NtCurrentTeb()->Tib.SubSystemTib)
Doesn't this just disable the if part 🤔
if (0 && NtCurrentTeb()->Tib.SubSystemTib)
Doesn't this just disable the if part thinking
yes
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.
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...
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 withWINEDEBUG=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
.
@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...
@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?
Couldnt manage to do it sadly
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
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
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
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?
I was not able to test it. I'm justing passing the information I got from a Reddit thread.
I was hopping for this to work 😕
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.
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?
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)
Hi all, the PR did NOT solve all the issues. Please don't run it just yet.. (or at your own risk)
@kyechou Could you post your PKGBUILD and launcher script?
@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.
I've heard something about a launcher script. Can you post that?
It's already updated, but again, it's not a solution.
(edit) here: https://github.com/kyechou/leagueoflegends/commit/2c5f02f8ecc53474a2f7d41ccf4c1e45e0a79800
Please also check out the update comment: https://github.com/GloriousEggroll/wine-ge-custom/pull/9#issuecomment-1500896901
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
@PalanixYT I just found a typo in the last commit. please pull again if you haven't done so.
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.
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 ❤
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)
@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.
[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.
've noticed that using the new leagueoflegends wrapper script I can join matches using 7.0.5.
'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
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...
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.
Reminder:
Please comment on this issue only when there are actionable information or log messages.
This is not a support thread.
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/
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)
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?
@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?
@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.
without the winedebug options and wine-lol-staging it always takes exacty 27-28 seconds for my game to crash with the winedebug options and yesterdays gdrive wine build it takes everywhere from 10s-1m for my game to crash heres what I could capture https://pastes.io/jufolsnvjy
i tryed make install fedora does nothing
System information
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
leagueoflegends -v start
Screenshots