https://bugs.winehq.org/show_bug.cgi?id=45145
Bug ID: 45145 Summary: League Of Legends: Fails to start several times, 300% CPU, Error: double free or corruption (!prev) Product: Wine Version: 3.7 Hardware: x86 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: mail+wine@m-reimer.de Distribution: ---
Since some patches, It is difficult for me to start League Of Legends on Linux.
I usually do the start on console, so I see error messages. Usually on the first start I see something like this:
$ LeagueClient.exe(00000009): ALWAYS| Application Version:8.9.227.4222 - CL:2274222 - Build Date:Apr 26 2018 - Build Time:00:06:04 double free or corruption (!prev)
This "double free or curruption" is a good sign that this startup has failed and will just hang forever. This usually causes some "corrupted window" to hang around on the desktop, which "clones" the desktop background (I can see that something is there if I move the mouse over it. It disappears behind it).
To continue my attempt to start LoL, I do:
killall LeagueClient.exe
followed by:
pgrep wine
several times to get sure Wine has shut down. If the pgrep doesn't return any PID's, I continue at step one and repeat all steps until I don't see the "double free or curruption" message. If the message doesn't appear, usually the client starts up.
If I get to this, I get a look at "top". If the now open League Client takes over 100% CPU on idle, I have to kill it again (CPU load usually doesn't drop and causes much too low FPS in game) and repeat at step one again...
I have to do all this every time I want to play LoL. I usually have to do between 3 and 10 loops through my steps.
Is there a way to find out why the "double free or curruption" error happens?
https://bugs.winehq.org/show_bug.cgi?id=45145
tokktokk fdsfgs@krutt.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |fdsfgs@krutt.org
https://bugs.winehq.org/show_bug.cgi?id=45145
jaapbuurman@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jaapbuurman@gmail.com
--- Comment #1 from jaapbuurman@gmail.com --- I am not seeing this on Wine 3.6.1 staging. Could you confirm/deny whether 3.6.1 staging is fine for you? If not, it might be specific to your particular setup.
https://bugs.winehq.org/show_bug.cgi?id=45145
--- Comment #2 from mail+wine@m-reimer.de --- I've tried with the latest wine-staging build:
$ pacman -Q wine-staging wine-staging 3.8-1
This is a "official package" from Arch Linux which seems to have one "unofficial" patch. If this patch could affect my problem, I could try to build without it:
https://git.archlinux.org/svntogit/community.git/tree/trunk/harmony-fix.diff...
I still have the two problems, mentioned in my bug report.
Yesterday, I again was able to launch the League client but all my CPU cores were at 100%. To get a bit more information, I opened a root shell and attached strace to the League client process. I'm attaching a part of it at the end of this comment. The lines are repeating with *very* fast speed.
Next step would maybe be building wine with debug symbols to find out where this "double error or corruption" error is triggered.
strace: Process 1639 attached strace: [ Process PID=1639 runs in 32 bit mode. ] read(6, "x\3373\0\0\0\0\0\2\1\0\0\0\0\0\0", 16) = 16 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 sched_yield() = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=763375276}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=763407832}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=763435923}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=763463285}) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 write(3, "\217\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\0\0\0\0"..., 64) = 64 read(4, "\3\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=763616038}) = 0 recvmsg(16, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(16, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(8, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(8, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) sched_yield() = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 write(3, "\10\0\0\0\0\0\0\0\0\0\0\0\230\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 read(4, "\0\0\0\0\0\0\0\0X\0\0\0.\0\0\0\17\0\0\0\0\0\0\0\0\360\375\177\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=763922288}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=763949915}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=763977132}) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [HUP INT USR1 USR2 ALRM CHLD IO], 8) = 0 writev(3, [{iov_base="\33\0\0\0008\0\0\0\0\0\0\0\2\0\0\0x\3373\0\0\0\0\0\360\205\370\377\377\377\377\377"..., iov_len=64}, {iov_base="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=40}, {iov_base="\4\0\0\0|\0\0\0\30\3533\0\0\0\0\0", iov_len=16}], 3) = 120 read(4, "\3\1\0\0\0\0\0\0\356h\2\300\271\362\323\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [HUP INT USR1 USR2 ALRM CHLD IO], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 read(6, "x\3373\0\0\0\0\0\2\1\0\0\0\0\0\0", 16) = 16 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 sched_yield() = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=813327844}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=813355745}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=813383672}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=813410954}) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 write(3, "\217\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\0\0\0\0"..., 64) = 64 read(4, "\3\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=813563049}) = 0 recvmsg(16, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(16, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(8, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(8, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) sched_yield() = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 write(3, "\10\0\0\0\0\0\0\0\0\0\0\0\230\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 read(4, "\0\0\0\0\0\0\0\0X\0\0\0.\0\0\0\17\0\0\0\0\0\0\0\0\360\375\177\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=813904314}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=813934971}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=813964776}) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [HUP INT USR1 USR2 ALRM CHLD IO], 8) = 0 writev(3, [{iov_base="\33\0\0\0008\0\0\0\0\0\0\0\2\0\0\0x\3373\0\0\0\0\0\360\205\370\377\377\377\377\377"..., iov_len=64}, {iov_base="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=40}, {iov_base="\4\0\0\0|\0\0\0\30\3533\0\0\0\0\0", iov_len=16}], 3) = 120 read(4, "\3\1\0\0\0\0\0\0\360\t\n\300\271\362\323\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [HUP INT USR1 USR2 ALRM CHLD IO], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 read(6, "x\3373\0\0\0\0\0\2\1\0\0\0\0\0\0", 16) = 16 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 sched_yield() = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=863955417}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=863985384}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864020428}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864052696}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864080095}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864107304}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864134338}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864163805}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864191141}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864221029}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864248322}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864278346}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864305466}) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 write(3, "\217\0\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\377\377\377\377\0\0\0\0"..., 64) = 64 read(4, "\3\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864459790}) = 0 recvmsg(16, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(16, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(8, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) recvmsg(8, {msg_namelen=0}, 0) = -1 EAGAIN (Resource temporarily unavailable) sched_yield() = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 write(3, "\10\0\0\0\0\0\0\0\0\0\0\0\230\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 read(4, "\0\0\0\0\0\0\0\0X\0\0\0.\0\0\0\17\0\0\0\0\0\0\0\0\360\375\177\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864828401}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864856257}) = 0 clock_gettime(CLOCK_MONOTONIC_RAW, {tv_sec=535, tv_nsec=864883529}) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [HUP INT USR1 USR2 ALRM CHLD IO], 8) = 0 writev(3, [{iov_base="\33\0\0\0008\0\0\0\0\0\0\0\2\0\0\0x\3373\0\0\0\0\0\360\205\370\377\377\377\377\377"..., iov_len=64}, {iov_base="\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=40}, {iov_base="\4\0\0\0|\0\0\0\30\3533\0\0\0\0\0", iov_len=16}], 3) = 120 read(4, "\3\1\0\0\0\0\0\0\234\316\21\300\271\362\323\1\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 64) = 64 rt_sigprocmask(SIG_SETMASK, [HUP INT USR1 USR2 ALRM CHLD IO], NULL, 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 read(6, "x\3373\0\0\0\0\0\2\1\0\0\0\0\0\0", 16) = 16 rt_sigprocmask(SIG_BLOCK, [HUP INT USR1 USR2 ALRM CHLD IO], [], 8) = 0 rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0 sched_yield() = 0
https://bugs.winehq.org/show_bug.cgi?id=45145
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |z.figura12@gmail.com
--- Comment #3 from Zebediah Figura z.figura12@gmail.com --- This sounds like a duplicate of bug 35041. Does the workaround given there (i.e. `taskset -c 0 wine LeagueClient.exe`) solve your problem?
https://bugs.winehq.org/show_bug.cgi?id=45145
blorby@depotware.org changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |blorby@depotware.org
--- Comment #4 from blorby@depotware.org --- I tried for a few weeks the taskset workaround with wine 3.14++, it does seem to work around the issue, as expected. It doesn't prove that's the same bug, but it does look a lot similar.
https://bugs.winehq.org/show_bug.cgi?id=45145
Michele Renosto composizion3@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |composizion3@hotmail.com
--- Comment #5 from Michele Renosto composizion3@hotmail.com --- I have the same issue, taskset -c 0 wine LeagueClient.exe seems to fix it but then I get 1 fps in game.
https://bugs.winehq.org/show_bug.cgi?id=45145
--- Comment #6 from Michele Renosto composizion3@hotmail.com --- (In reply to blorby from comment #4)
It doesn't prove that's the same bug, but it does look a lot similar.
I think it really is the same bug, I compiled libX11 with the CrossOver's patches provided in that thread and now LeagueClients.exe starts successfully every time.
https://bugs.winehq.org/show_bug.cgi?id=35041#c38
https://bugs.winehq.org/show_bug.cgi?id=45145
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |DUPLICATE
--- Comment #7 from Zebediah Figura z.figura12@gmail.com --- (In reply to Michele Renosto from comment #6)
(In reply to blorby from comment #4)
It doesn't prove that's the same bug, but it does look a lot similar.
I think it really is the same bug, I compiled libX11 with the CrossOver's patches provided in that thread and now LeagueClients.exe starts successfully every time.
Resolving duplicate then.
*** This bug has been marked as a duplicate of bug 35041 ***
https://bugs.winehq.org/show_bug.cgi?id=45145
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #8 from Alistair Leslie-Hughes leslie_alistair@hotmail.com --- Closing Duplicate.