lutris / wine

Repository containing source code for various Lutris Wine builds
Other
142 stars 23 forks source link

6.21 wont run on x86_64 #128

Closed axet closed 2 years ago

axet commented 2 years ago

Hello!

Recent lutris 6.21-6 wine release work twice (!!!) as fast on x32 prefixes and unable to start any x64 prefixes (in compare to 6.14-4).

Nothing helping: creating new clean prefixes, checking filesystem.

Same prefixes works fine with 6.14-4 or even winehq-6.21. If I switch to 6.21-6 x86_64 prefixes are freeze at start unless I turn off network?! Then after game starts resuming network - makes everything works fine (and faster then on windows!!!)

Looks like freezing is network related issue. Freeze message is common:

0024:err:environ:run_wineboot boot event wait timed out

and a lot of wineboot output like:

0054:err:sync:RtlpWaitForCriticalSection section 000000007BC6C640 "/home/ubuntu/buildbot/runners/wine/wine-src/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0054, blocked by 0050, retrying (60 sec)
0060:err:sync:RtlpWaitForCriticalSection section 000000023D8FB140 "/home/ubuntu/buildbot/runners/wine/wine-src/dlls/user32/user_main.c: user_section" wait timed out in thread 0060, blocked by 0040, retrying (60 sec)
0054:err:sync:RtlpWaitForCriticalSection section 000000007BC6C640 "/home/ubuntu/buildbot/runners/wine/wine-src/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0054, blocked by 0050, retrying (60 sec)
0060:err:sync:RtlpWaitForCriticalSection section 000000023D8FB140 "/home/ubuntu/buildbot/runners/wine/wine-src/dlls/user32/user_main.c: user_section" wait timed out in thread 0060, blocked by 0040, retrying (60 sec)
0054:err:sync:RtlpWaitForCriticalSection section 000000007BC6C640 "/home/ubuntu/buildbot/runners/wine/wine-src/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0054, blocked by 0050, retrying (60 sec)
0060:err:sync:RtlpWaitForCriticalSection section 000000023D8FB140 "/home/ubuntu/buildbot/runners/wine/wine-src/dlls/user32/user_main.c: user_section" wait timed out in thread 0060, blocked by 0040, retrying (60 sec)
0054:err:sync:RtlpWaitForCriticalSection section 000000007BC6C640 "/home/ubuntu/buildbot/runners/wine/wine-src/dlls/ntdll/loader.c: loader_section" wait timed out in thread 0054, blocked by 0050, retrying (60 sec)
0060:err:sync:RtlpWaitForCriticalSection section 000000023D8FB140 "/home/ubuntu/buildbot/runners/wine/wine-src/dlls/user32/user_main.c: user_section" wait timed out in thread 0060, blocked by 0040, retrying (60 sec)

I able to start x86_64 wine only with wifi disabled... Seems like some network activity preventing wine to start or create prefix...

Is here a virus?

I did some tests with 'strace' and got following logs:

writev(3, [{iov_base="\33\0\0\0000\0\0\0\0\0\0\0\2\0\0\0\324\244\303\377\0\0\0\0\251\7Q=\367\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="\1\0\0\0\4\0\0\0", iov_len=8}], 3) = 112
read(5, "\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, [HUP INT USR1 USR2 ALRM CHLD IO], NULL, 8) = 0
read(7,

Where 7 file number is defined as pipe:

pipe2([5, 6], O_CLOEXEC)                = 0
pipe2([7, 8], O_CLOEXEC)                = 0

Full logs of WINEPREFIX=$PWD/123 strace --output=123.log ~/.local/share/lutris/runners/wine/lutris-6.21-6-x86_64/bin/wineboot attached.

axet commented 2 years ago

123.txt

tannisroot commented 2 years ago

Can you reproduce this with wine ge? https://github.com/GloriousEggroll/wine-ge-custom/releases/tag/6.21-GE-1

axet commented 2 years ago

Works fine.

For lutris version I tried: WINEDEBUG=+all; WINDEBUG=+relay; strace, wireshark - no clues.

axet commented 2 years ago

First run works, second run wine-ge fails (I recall same behavior as with lutris-6.21 version, I played the game first time I run it, then it starts to freeze at start)

Original directory with wine-ge unchanged.

And I recheck 6.14 it keep working

tannisroot commented 2 years ago

Can you see if Wine-Staging 6.21 works reliable as well?

axet commented 2 years ago

OK. winehq-6.21 failing on second run with following:

axet@axet-laptop:~$ poe
002c:err:wineboot:process_run_key Error running cmd L"C:\\windows\\system32\\winemenubuilder.exe -a -r" (126).
double free or corruption (out)
00d0:err:sync:RtlpWaitForCriticalSection section 000000007BC64600 "dlls/ntdll/loader.c: loader_section" wait timed out in thread 00d0, blocked by 00c0, retrying (60 sec)

lutris-6.21 wineboot failing with more detail message now:

axet@axet-laptop:~$ WINEPREFIX=$PWD/123 ~/.local/share/lutris/runners/wine/lutris-6.21-6-x86_64/bin/wineboot
wineserver: using server-side synchronization.
002c:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
002c:fixme:winediag:LdrInitializeThunk Wine TkG (staging) 6.21 is a testing version containing experimental patches.
002c:fixme:winediag:LdrInitializeThunk Please don't report bugs about it on winehq.org and use https://github.com/Frogging-Family/wine-tkg-git/issues instead.
0040:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
munmap_chunk(): invalid pointer
0040:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded.
0040:err:winediag:nodrv_CreateWindow Unknown error (317).
0040:err:systray:initialize_systray Could not create tray window
0040:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hr 0x80004002
0040:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, hr 0x80004002
0040:err:ole:apartment_get_local_server_stream Failed: 0x80004002
00d4:err:sync:RtlpWaitForCriticalSection section 000000007BC64600 "dlls/ntdll/loader.c: loader_section" wait timed out in thread 00d4, blocked by 00c0, retrying (60 sec)
00d0:err:sync:RtlpWaitForCriticalSection section 000000007BC64600 "dlls/ntdll/loader.c: loader_section" wait timed out in thread 00d0, blocked by 00c0, retrying (60 sec)

winehq-6.21

axet@axet-laptop:~$ WINEPREFIX=$PWD/123 ~/.local/share/lutris/runners/wine/winehq-6.21-x86_64/bin/wineboot
002c:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
0048:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
0050:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0)
double free or corruption (out)
tannisroot commented 2 years ago

What distribution are you on?

axet commented 2 years ago

debian 12 bookworm

tannisroot commented 2 years ago

Are you able to install older wine-staging version on Debian easily? For regression testing purposes

axet commented 2 years ago

Yes. I wrote helping wrapper, which can select any version easily:

EDIT: it downloads and unpack winehq from deb files from original winehq repo into lutris runners folder with one command.

tannisroot commented 2 years ago

Can you test versions between 6.14 and 6.21 to determine in which one the issue first appeared? Make sure to account for breakage on second launch.

axet commented 2 years ago

They all working fine. I ran twice each.

axet commented 2 years ago

winehq-6.22 works fine. Twice run. Worth rebasing?

axet commented 2 years ago

I found what is causing it. Very strange.

Having those files in ~/.cache/AMD/VkCache directory causing wine to crash with double corrupt message:

A21E3B76F983AB25CAD2A47E19EFB13B_1.parc A21E3B76F983AB25CAD2A47E19EFB13B_4.parc A21E3B76F983AB25CAD2A47E19EFB13B_7.parc A21E3B76F983AB25CAD2A47E19EFB13B.parc A21E3B76F983AB25CAD2A47E19EFB13B_2.parc A21E3B76F983AB25CAD2A47E19EFB13B_5.parc A21E3B76F983AB25CAD2A47E19EFB13B_8.parc A21E3B76F983AB25CAD2A47E19EFB13B_3.parc A21E3B76F983AB25CAD2A47E19EFB13B_6.parc A21E3B76F983AB25CAD2A47E19EFB13B_9.parc

I guess I'm using AMD video card with (amdvlk:amd64 2021.Q4.2) installed from official repository.

It is lutris-6.21-6 dependent (or any wine).

files:

AMD video driver:

tannisroot commented 2 years ago

Please do not use AMDVLK driver, just uninstall it and use plain mesa. AMDVLK is a lot buggier and slower than radv from mesa.

axet commented 2 years ago

I'l try mesa one. Looks similar...

But reinstalling AMDVLK cauing this "wired" cache appear again in smaller size (10M) and cusing corruption again

tannisroot commented 2 years ago

Please just uninstall AMDVLK.

axet commented 2 years ago

Ok. I saved those files in cache folder. In case this is a virus.

tannisroot commented 2 years ago

It's not a virus, those are just shader cache files.