https://bugs.winehq.org/show_bug.cgi?id=40963
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net
--- Comment #9 from Anastasius Focht focht@gmx.net --- Hello folks,
since this is the only ticket that references this staged patchset:
https://github.com/wine-compholio/wine-staging/blob/master/patches/xaudio2_7...
This patch breaks World of Warships 0.5.16.x and earlier from Wargaming - it crashes shortly after start. Since Wine-Staging is the only way to get decent graphics performance out of the game (CSMT), I've had the patch on my ignore list for months and forgot to report it. Actually I was wondering why no one else reported it the whole time.
--- snip --- $ pwd /home/focht/wine-games/wineprefix64-wargaming/drive_c/Games/World_of_Warships
$ wine ./WorldOfWarships.exe ... Unhandled exception: page fault on read access to 0x00000054 in 32-bit code (0x0138e860). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:0138e860 ESP:1648e8dc EBP:1648e918 EFLAGS:00210297( R- -- I S -A-P-C) EAX:00000004 EBX:f74d2000 ECX:00000054 EDX:12ba4d34 ESI:14e80cb4 EDI:1648fb40
Backtrace: =>0 0x0138e860 in worldofwarships (+0xf8e860) (0x1648e918) 1 0xf3879396 do_engine_tick+0x232(This=0x211b80) [/home/focht/projects/wine/wine.repo/staging-build-x86/dlls/xaudio2_7/../../include/xaudio2.h:5965] in xaudio2_7 (0x1648e9c8) 2 0xf387966b engine_threadproc+0x94(arg=<couldn't compute location>) [/home/focht/projects/wine/wine.repo/staging-src/dlls/xaudio2_7/xaudio_dll.c:2454] in xaudio2_7 (0x1648e9f8) 3 0x7bc972d4 call_thread_func_wrapper+0xb() in ntdll (0x1648ea28) 4 0x7bc9730f call_thread_func+0x30(entry=0xf38795d6, arg=0x211b80, frame=0x1648eb28) [/home/focht/projects/wine/wine.repo/staging-src/dlls/ntdll/signal_i386.c:2815] in ntdll (0x1648eb08) ... 0x0138e860: movl 0x0(%ecx),%eax Modules: Module Address Debug info Name (204 modules) PE 340000- 38c000 Deferred ortp PE 390000- 3c4000 Deferred ilu_x86r PE 3d0000- 3de000 Deferred gettext_x86r PE 400000- 277c000 Export worldofwarships PE 2780000- 2c7c000 Deferred vivoxsdk PE 2c80000- 2ed3000 Deferred resil_x86r PE 10000000-101ff000 Deferred d3dx9_43 ELF 7a800000-7a942000 Deferred opengl32<elf> -PE 7a840000-7a942000 \ opengl32 ELF 7b400000-7b7ec000 Deferred kernel32<elf> -PE 7b420000-7b7ec000 \ kernel32 ELF 7bc00000-7bd11000 Dwarf ntdll<elf> -PE 7bc30000-7bd11000 \ ntdll ELF 7c000000-7c004000 Deferred <wine-loader> ... Threads: process tid prio (all id:s are in hex) ... 00000091 WargamingGameUpdater.exe 00000095 0 00000092 0 000000b0 (D) C:\Games\World_of_Warships\worldofwarships.exe 000000c7 1 000000c6 0 000000c5 15 000000c4 0 <== 000000c3 0 000000c2 0 000000c1 1 000000c0 0 000000bf 0 000000be 0 000000bd 0 000000bc 0 000000bb 0 000000ba 0 000000b9 0 000000b8 0 000000b7 0 000000b6 0 000000b1 0 ... System information: Wine build: wine-2.0-rc3-900-g9b4c5ab (Staging) Platform: i386 (WOW64) Version: Windows XP Host system: Linux Host version: 4.4.14-200.fc22.x86_64 --- snip ---
Better trace:
--- snip --- $ WINEDEBUG=+tid,+seh,+relay,+xaudio2 wine ./WorldOfWarships.exe >>log.txt 2>&1 ... 0123:Call KERNEL32.LoadLibraryExW(0032e45e L"C:\windows\system32\xaudio2_7.dll",00000000,00000008) ret=014a19d6 0123:Call PE DLL (proc=0xf3c25695,module=0xf3c10000 L"xaudio2_7.dll",reason=PROCESS_ATTACH,res=(nil)) 0123:trace:xaudio2:DllMain (0xf3c10000, 1, (nil)) ... 0123:Ret PE DLL (proc=0xf3c25695,module=0xf3c10000 L"xaudio2_7.dll",reason=PROCESS_ATTACH,res=(nil)) retval=1 0123:Ret KERNEL32.LoadLibraryExW() retval=f3c10000 ret=014a19d6 ... 0123:trace:xaudio2:XAudio2CF_CreateInstance (0xfc87548)->((nil),{8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb},0x32e7dc) ... 0123:trace:xaudio2:IXAudio2Impl_QueryInterface (0xfc87560)->({8bcf1f58-9fe7-4583-8ac6-e2adc465c8bb}, 0x32e7dc) 0123:trace:xaudio2:IXAudio2Impl_AddRef (0xfc87560)->(): Refcount now 1 ... 0123:trace:xaudio2:IXAudio2Impl_StartEngine (0xfc87560)->() 0123:Call KERNEL32.CreateThread(00000000,00000000,f3c255d6,0fc87560,00000000,00000000) ret=f3c239d2 0123:Ret KERNEL32.CreateThread() retval=000001a8 ret=f3c239d2 0123:trace:xaudio2:XAudio2CF_CreateInstance Created XAudio version 27: 0xfc87560 0123:trace:xaudio2:XAudio2CF_Release (0xfc87548)->(): Refcount now 0 ... 0123:Ret ole32.CoCreateInstance() retval=00000000 ret=013fcc69 0123:trace:xaudio2:XA27_Initialize (0xfc87560)->(0x0, 0xffffffff) ... 0133:Starting thread proc 0xf3c255d6 (arg=0xfc87560) ... 0123:trace:xaudio2:XA27_CreateMasteringVoice (0xfc87560)->(0x14e30cc4, 0, 48000, 0x0, 0, (nil)) 0123:trace:xaudio2:IXAudio2Impl_CreateMasteringVoice (0xfc87560)->(0x14e30cc4, 0, 48000, 0x0, L"{0.0.0.00000000}.{FD47D9CC-4218-4135-9CE2-0C195C87405B}", (nil), 0x6) ... 0123:trace:xaudio2:IXAudio2Impl_RegisterForCallbacks (0xfc87560)->(0x14e30cb0) 0123:trace:xaudio2:XA27_GetDeviceDetails 0xfc87560, 0, 0x32e940 ... 0133:trace:xaudio2:do_engine_tick frames available: 1440 ... 0123:trace:xaudio2:IXAudio2Impl_CreateSourceVoice (0xfc87560)->(0x14e30cc8, 0x32ed6c, 0x0, 1.000000, 0x14e30cb4, (nil), (nil)) 0123:trace:xaudio2:dump_fmt wFormatTag: 0xfffe (WAVE_FORMAT_EXTENSIBLE) 0123:trace:xaudio2:dump_fmt nChannels: 2 0123:trace:xaudio2:dump_fmt nSamplesPerSec: 48000 0123:trace:xaudio2:dump_fmt nAvgBytesPerSec: 384000 0123:trace:xaudio2:dump_fmt nBlockAlign: 8 0123:trace:xaudio2:dump_fmt wBitsPerSample: 32 0123:trace:xaudio2:dump_fmt cbSize: 22 0123:trace:xaudio2:dump_fmt dwChannelMask: 00000003 0123:trace:xaudio2:dump_fmt Samples: 0020 0123:trace:xaudio2:dump_fmt SubFormat: {00000003-0000-0010-8000-00aa00389b71} ... 0133:Ret KERNEL32.WaitForSingleObject() retval=00000000 ret=f3c255ff ... 0123:trace:xaudio2:XA2SRC_SetOutputVoices 0xfc8c9d8, (nil) 0123:trace:xaudio2:XA2SRC_SetOutputVoices Outputting to: 0x0, 0xfc87564 ... 0133:trace:xaudio2:do_engine_tick frames available: 1440 ... 0123:trace:xaudio2:IXAudio2Impl_CreateSourceVoice Created source voice: 0xfc8c9d8 0133:trace:xaudio2:do_engine_tick Calling OnVoiceProcessingPassStart with BytesRequired: 19200 0123:trace:xaudio2:XA2SRC_SetVolume 0xfc8c9d8, 1.000000, 0x0 0133:trace:xaudio2:XA2SRC_GetState 0xfc8c9d8, 0x1643e908, 0x0 0133:trace:xaudio2:XA2SRC_GetState returning 0, queued: 0 0123:Call msvcr110.memcpy(0032eda0,0032ede0,0000000c) ret=0132da59 0123:Ret msvcr110.memcpy() retval=0032eda0 ret=0132da59 0133:trace:seh:raise_exception code=c0000005 flags=0 addr=0x138e860 ip=0138e860 tid=0133 0133:trace:seh:raise_exception info[0]=00000000 0133:trace:seh:raise_exception info[1]=00000054 0133:trace:seh:raise_exception eax=00000004 ebx=f7542000 ecx=00000054 edx=1643ef4c esi=14e30cb4 edi=1643fb40 0133:trace:seh:raise_exception ebp=1643e918 esp=1643e8dc cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00210297 ... --- snip ---
Slowing down by adding more trace or debugging avoids the crash sometimes but most of the time it crashes immediately.
Reverting the patch or skipping it during build ('-W xaudio2_7-Abandon_Albufs') avoids the crash and everything is fine.
Regards