http://bugs.winehq.org/show_bug.cgi?id=28140
Summary: theatre of war 3 korea Demo does not start Product: Wine Version: 1.3.26 Platform: x86-64 OS/Version: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: lill.guill@gmail.com
Hello, Theatre of war 3 korea Demo does not start.
fixme:exec:SHELL_execute flags ignored: 0x00000100 fixme:exec:SHELL_execute flags ignored: 0x00004100
fixme:wintrust:WinVerifyTrust unimplemented for 11088336 wine: Unhandled page fault on read access to 0x7ff8b2d0 at address 0x7ff8b2d0 (thread 0026), starting debugger... Unhandled exception: page fault on read access to 0x7ff8b2d0 in 32-bit code (0x7ff8b2d0). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:7ff8b2d0 ESP:0033fc08 EBP:0033fc10 EFLAGS:00010246( R- -- I Z- -P- ) EAX:00d4b600 EBX:00000000 ECX:00000000 EDX:00d4a660 ESI:00d4b640 EDI:00a8040c Stack dump: 0x0033fc08: 7ffc0592 00000000 0033fc64 00a7ffe6 0x0033fc18: 00a8040c 0033fc28 00a455f0 0033fc64 0x0033fc28: 0033fc98 00a455f0 0033fc64 00a8040c 0x0033fc38: 00d4b640 00d4b640 00000000 00000000 0x0033fc48: 00000000 00000000 00d3e240 00000000 0x0033fc58: 00000000 00000000 00000000 0033fc8c Backtrace: =>0 0x7ff8b2d0 (0x0033fc10) 1 0x00a7ffe6 in korea (+0x67ffe5) (0x0033fc64) 2 0x00a7840d in korea (+0x67840c) (0x0033fc8c) 3 0x00a803c5 in korea (+0x6803c4) (0x0033fcf0) 4 0x00a968d4 in korea (+0x6968d3) (0x0033fdbc) 5 0x00a9ca48 in korea (+0x69ca47) (0x0033fdec) 6 0x00a9d10d in korea (+0x69d10c) (0x0033fe1c) 7 0x00a9d363 in korea (+0x69d362) (0x0033fe7c) 8 0x0040127d in korea (+0x127c) (0x0033fe90) 9 0x7b85aa7c call_process_entry+0xb() in kernel32 (0x0033fea8) 10 0x7b85df4b in kernel32 (+0x4df4a) (0x0033fee8) 11 0x7bc71358 call_thread_func+0xb() in ntdll (0x0033fef8) 12 0x7bc7152e in ntdll (+0x6152d) (0x0033ffc8) 13 0x7bc4bd8e in ntdll (+0x3bd8d) (0x0033ffe8) 0x7ff8b2d0: addb %al,0x0(%eax) Modules: Module Address Debug info Name (71 modules) PE 400000- ad8000 Export korea ELF 7b800000-7b9aa000 Dwarf kernel32<elf> -PE 7b810000-7b9aa000 \ kernel32 ELF 7bc00000-7bcc1000 Dwarf ntdll<elf> -PE 7bc10000-7bcc1000 \ ntdll ELF 7bf00000-7bf04000 Deferred <wine-loader> ELF 7e089000-7e09d000 Deferred psapi<elf> -PE 7e090000-7e09d000 \ psapi ELF 7e09d000-7e0b1000 Deferred shfolder<elf> -PE 7e0a0000-7e0b1000 \ shfolder ELF 7e113000-7e147000 Deferred uxtheme<elf> -PE 7e120000-7e147000 \ uxtheme ELF 7e147000-7e23a000 Deferred comctl32<elf> -PE 7e150000-7e23a000 \ comctl32 ELF 7e23a000-7e2a4000 Deferred shlwapi<elf> -PE 7e250000-7e2a4000 \ shlwapi ELF 7e2a4000-7e4af000 Deferred shell32<elf> -PE 7e2b0000-7e4af000 \ shell32 ELF 7e4af000-7e55d000 Deferred crypt32<elf> -PE 7e4c0000-7e55d000 \ crypt32 ELF 7e55d000-7e590000 Deferred wintrust<elf> -PE 7e560000-7e590000 \ wintrust ELF 7e590000-7e606000 Deferred rpcrt4<elf> -PE 7e5a0000-7e606000 \ rpcrt4 ELF 7e606000-7e70d000 Deferred ole32<elf> -PE 7e620000-7e70d000 \ ole32 ELF 7e70d000-7e800000 Deferred oleaut32<elf> -PE 7e720000-7e800000 \ oleaut32 ELF 7e800000-7e80a000 Deferred libxcursor.so.1 ELF 7e80a000-7e818000 Deferred libxi.so.6 ELF 7e818000-7e81e000 Deferred libxfixes.so.3 ELF 7e81e000-7e822000 Deferred libxcomposite.so.1 ELF 7e822000-7e82a000 Deferred libxrandr.so.2 ELF 7e82a000-7e834000 Deferred libxrender.so.1 ELF 7e834000-7e83a000 Deferred libxxf86vm.so.1 ELF 7e83a000-7e83e000 Deferred libxinerama.so.1 ELF 7e83e000-7e860000 Deferred imm32<elf> -PE 7e840000-7e860000 \ imm32 ELF 7e860000-7e866000 Deferred libxdmcp.so.6 ELF 7e866000-7e86a000 Deferred libxau.so.6 ELF 7e86a000-7e884000 Deferred libxcb.so.1 ELF 7e884000-7e889000 Deferred libuuid.so.1 ELF 7e889000-7e9a6000 Deferred libx11.so.6 ELF 7e9a6000-7e9b6000 Deferred libxext.so.6 ELF 7e9b6000-7e9cf000 Deferred libice.so.6 ELF 7e9cf000-7e9d8000 Deferred libsm.so.6 ELF 7e9fc000-7eaa4000 Deferred winex11<elf> -PE 7ea10000-7eaa4000 \ winex11 ELF 7ead9000-7eb00000 Deferred libexpat.so.1 ELF 7eb00000-7eb30000 Deferred libfontconfig.so.1 ELF 7eb30000-7eb45000 Deferred libz.so.1 ELF 7eb45000-7ebbb000 Deferred libfreetype.so.6 ELF 7ebdf000-7ec40000 Deferred advapi32<elf> -PE 7ebf0000-7ec40000 \ advapi32 ELF 7ec40000-7ece4000 Deferred gdi32<elf> -PE 7ec50000-7ece4000 \ gdi32 ELF 7ece4000-7ee21000 Deferred user32<elf> -PE 7ed00000-7ee21000 \ user32 ELF 7ee21000-7ee2d000 Deferred libnss_files.so.2 ELF 7ee2d000-7ee35000 Deferred libnss_compat.so.2 ELF 7ee40000-7ee59000 Deferred version<elf> -PE 7ee50000-7ee59000 \ version ELF 7efb6000-7efdc000 Deferred libm.so.6 ELF 7efdf000-7efe9000 Deferred libnss_nis.so.2 ELF 7efe9000-7f000000 Deferred libnsl.so.1 ELF f7429000-f742d000 Deferred libdl.so.2 ELF f742d000-f7587000 Deferred libc.so.6 ELF f7588000-f75a1000 Deferred libpthread.so.0 ELF f75c5000-f7706000 Dwarf libwine.so.1 ELF f7708000-f7726000 Deferred ld-linux.so.2 ELF f7726000-f7727000 Deferred [vdso].so Threads: process tid prio (all id:s are in hex) 0000000e services.exe 00000021 0 0000001c 0 00000016 0 00000015 0 00000014 0 00000010 0 0000000f 0 00000011 winedevice.exe 00000018 0 00000017 0 00000013 0 00000012 0 00000019 plugplay.exe 0000001d 0 0000001b 0 0000001a 0 0000001e winedevice.exe 00000022 0 00000020 0 0000001f 0 00000023 explorer.exe 00000024 0 00000025 (D) C:\Program Files\Battlefront\1C Company\Theatre of War 3 Korea - Trial Version\Korea.exe 00000026 0 <== Backtrace: =>0 0x7ff8b2d0 (0x0033fc10) 1 0x00a7ffe6 in korea (+0x67ffe5) (0x0033fc64) 2 0x00a7840d in korea (+0x67840c) (0x0033fc8c) 3 0x00a803c5 in korea (+0x6803c4) (0x0033fcf0) 4 0x00a968d4 in korea (+0x6968d3) (0x0033fdbc) 5 0x00a9ca48 in korea (+0x69ca47) (0x0033fdec) 6 0x00a9d10d in korea (+0x69d10c) (0x0033fe1c) 7 0x00a9d363 in korea (+0x69d362) (0x0033fe7c) 8 0x0040127d in korea (+0x127c) (0x0033fe90) 9 0x7b85aa7c call_process_entry+0xb() in kernel32 (0x0033fea8) 10 0x7b85df4b in kernel32 (+0x4df4a) (0x0033fee8) 11 0x7bc71358 call_thread_func+0xb() in ntdll (0x0033fef8) 12 0x7bc7152e in ntdll (+0x6152d) (0x0033ffc8) 13 0x7bc4bd8e in ntdll (+0x3bd8d) (0x0033ffe8)
http://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #1 from lill.guill@gmail.com 2011-11-21 08:20:17 CST --- still present in 1.3.31
http://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #2 from lill.guill@gmail.com 2012-09-03 07:17:04 CDT --- still present in 1.5.11
http://bugs.winehq.org/show_bug.cgi?id=28140
Jarkko K jarkko_korpi@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jarkko_korpi@hotmail.com
--- Comment #3 from Jarkko K jarkko_korpi@hotmail.com --- Demo
http://www.fileplanet.com/219558/210000/fileinfo/Theatre-of-War-3:-Korea-Dem...
Might try later. It's a bit big for me.
http://bugs.winehq.org/show_bug.cgi?id=28140
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download, obfuscation Status|UNCONFIRMED |NEW URL| |http://www.fileplanet.com/2 | |19558/210000/fileinfo/Theat | |re-of-War-3:-Korea-Demo CC| |focht@gmx.net Summary|theatre of war 3 korea Demo |Theatre of War 3: Korea |does not start |demo 1.2.0 crashes on | |startup Ever confirmed|0 |1
--- Comment #4 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming, still present - although it's a different crash now (unhandled C++ exception) which can be attributed to Wine having evolved over time.
Since there exist bug 26827 and bug 36491 which I can't reproduce (most likely users with broken host deps) using this one for current issue.
The game is Java-based, compiled to native code and obfuscated with Excelsior JET 5.0 runtime.
--- snip --- Korea.jar 91 1.5.0_11 DESKTOP com/ic/ww/game/GameWin3D jet-500-release (pro, en) 1.5.0_11 XKRN50091.dll 4 XMIS50091.DLL=*{comp.dir}\rt\jetrt\XMIS50091.dll 4 XXML50091.DLL=*{comp.dir}\rt\jetrt\XXML50091.dll 4 XAWT50091.DLL=*{comp.dir}\rt\jetrt\XAWT50091.dll 4 XSEC50091.DLL=*{comp.dir}\rt\jetrt\XSEC50091.dll 4 XKRN50091.DLL=*{comp.dir}\rt\jetrt\XKRN50091.dll ` -Djava.class.path:Korea.jar -Djet.jit.fast -Djet.gc.heaplimit:402653184 -Djet.stack.trace --- snip ---
--- snip --- at com.maddox.rts.RTS.loadNative(Unknown Source) at com.maddox.rts.RTS.<clinit>(Unknown Source) at com.maddox.rts.RTS.loadNative(Unknown Source) at com.maddox.rts.SFSInputStream.<clinit>(Unknown Source) at com.maddox.rts.SFSReader.<init>(Unknown Source) at com.maddox.rts.IniFile.loadFile(Unknown Source) at com.maddox.rts.IniFile.<init>(Unknown Source) at com.maddox.rts.IniFile.<init>(Unknown Source) at com.ic.ww.game.GameWin3D.createConfigs(Unknown Source) at com.ic.ww.game.Main.exec(Unknown Source) at com.ic.ww.game.GameWin3D.main(Unknown Source) --- snip ---
You can tweak various settings "offline" by editing 'ww.ini' in game folder:
--- snip --- ... [core] refresh=60 renderer=Direct3D9 window=(changeScreenRes=true,colourBits=32,depthBits=24,drawIfNotFocused=false,enableClose=false,enableResize=false,fullScreen=false,height=768,stencilBits=8,width=1024,posx=0,posy=0) console=(bLog=true,bLogTime=false,bPause=true,bUseStartLog=false,bWrap=true,history=128,historyCmd=128,logFile=log.lst,page=20) ... --- snip ---
'fullScreen=false' -> windowed mode
The crash seems to be dependent on number/type of active debug channels (timing/threading/race?).
The launcher (parent, tid 0062) and game main process (child, console process, tid 0060) communicate with IPC-like mechanism using process pipes. The child instructs the parent to carry out various things.
Trace with +relay:
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/Battlefront/1C Company/Theatre of War 3 Korea - Trial Version
$ WINEDEBUG=+tid,+seh,+relay wine ./Korea.exe >>log.txt 2>&1 ... 002a:Call KERNEL32.CreateProcessW(00000000,0033a97c L"C:\Program Files\Battlefront\1C Company\Theatre of War 3 Korea - Trial Version\Korea.bin",00000000,00000000,00000001,00000000,00000000,00000000,0033bc30,0033bc14) ret=00a9255d ... 0060:Starting process L"C:\Program Files\Battlefront\1C Company\Theatre of War 3 Korea - Trial Version\Korea.bin" (entryproc=0x401000) ... 0060:Call KERNEL32.LoadLibraryA(0151fce8 "C:\Program Files\Battlefront\1C Company\Theatre of War 3 Korea - Trial Version\rt\jetrt\XKRN50091.dll") ret=00af9c39 ... 002a:Call KERNEL32.CreateThread(00000000,00000000,00402070,00000000,00000000,00000000) ret=0040280e ... 002a:Ret KERNEL32.CreateThread() retval=000002e0 ret=0040280e ... 0062:Call TLS callback (proc=0xa9cf98,module=0x400000,reason=THREAD_ATTACH,reserved=0) ... 0060:Call KERNEL32.GetProcAddress(041b0000,0151f5b8 "_Java_com_maddox_core_SMesh_LoadAnimation@16") ret=067aa223 0060:Ret KERNEL32.GetProcAddress() retval=042e5ba0 ret=067aa223 ... 0062:Call KERNEL32.CreateFileA(0cb6e810 "Animations\ANI\creep_idle.ani",80000000,00000001,00000000,00000003,10000000,00000000) ret=00408131 0062:Ret KERNEL32.CreateFileA() retval=ffffffff ret=00408131 ... 0062:Call user32.FindWindowA(004121d0 "1CMaddoxDirect3DWndClass",004121ec "Korea") ret=004020c0 ... 0062:Ret user32.FindWindowA() retval=000200be ret=004020c0 ... 0062:Ret KERNEL32.WaitForSingleObject() retval=00000000 ret=0040191b 0060:Ret KERNEL32.WaitForSingleObject() retval=00000000 ret=03fd60eb 0062:Call KERNEL32.WriteFile(000002d4,0041ce80,00007fff,0cb6e980,00000000) ret=0040193e 0060:Call KERNEL32.ReadFile(00000010,04004b08,00007fff,04011b30,00000000) ret=03fd610a 0060:Ret KERNEL32.ReadFile() retval=00000001 ret=03fd610a 0060:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0151e4e4) ret=7c359aed 0060:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b83ac57 ip=7b83ac57 tid=0060 0060:trace:seh:raise_exception info[0]=19930520 0060:trace:seh:raise_exception info[1]=0151e520 0060:trace:seh:raise_exception info[2]=03feb5b8 0060:trace:seh:raise_exception eax=7b826c7d ebx=7b8bb000 ecx=03feb5b8 edx=0151e430 esi=0151e4c8 edi=0151e490 0060:trace:seh:raise_exception ebp=0151e468 esp=0151e404 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000287 ... 0062:Ret KERNEL32.WriteFile() retval=00000001 ret=0040193e 0060:Call ntdll.RtlUnwind(0151f714,7c359b4e,0151e410,00000000) ret=7c359b4e 0062:Call KERNEL32.WaitForSingleObject(000002d4,00000000) ret=0040195a ... 0060:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0151f94c) ret=7c359aed 0060:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b83ac57 ip=7b83ac57 tid=0060 0060:trace:seh:raise_exception info[0]=19930520 0060:trace:seh:raise_exception info[1]=0151f968 0060:trace:seh:raise_exception info[2]=043b81ac 0060:trace:seh:raise_exception eax=7b826c7d ebx=7b8bb000 ecx=19930520 edx=0151f884 esi=0151f930 edi=0151f8f0 0060:trace:seh:raise_exception ebp=0151f8c8 esp=0151f864 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000283 ... java.lang.RuntimeException: INTERNAL ERROR: Can't load animation 'Animations/ANI/creep_idle.ani' --- snip ---
These paths are internal, probably kind of virtual file system within BLOBs. The errors are more or less random, depending on timing/load:
--- snip --- java.lang.RuntimeException: INTERNAL ERROR: Can't load animation 'Animations/ANI/6pdr_c2_infantry.ani' --- snip ---
The JET runtime system links against MS VC++ 2003 runtime, native msvcr71/msvcp71 doesn't improve the situation.
$ sha1sum Theatre-of-War3_Korea_Trial_Version.exe 954a1704fd61a8971548af5c8ac218583ffe9d6c Theatre-of-War3_Korea_Trial_Version.exe
$ du -sh Theatre-of-War3_Korea_Trial_Version.exe 1.7G Theatre-of-War3_Korea_Trial_Version.exe
$ wine --version wine-1.7.19-56-gee13e10
Regards
https://bugs.winehq.org/show_bug.cgi?id=28140
Teras teras@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |teras@luukku.com
--- Comment #5 from Teras teras@luukku.com --- the same 1.7.37
https://bugs.winehq.org/show_bug.cgi?id=28140
super_man@post.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |super_man@post.com
--- Comment #6 from super_man@post.com --- I dont know if it really means anything, but
0062:Call KERNEL32.CreateFileA(0cb6e810 "Animations\ANI\creep_idle.ani",80000000,00000001,00000000,00000003,10000000,00000000) ret=00408131
and later it complains
java.lang.RuntimeException: INTERNAL ERROR: Can't load animation 'Animations/ANI/creep_idle.ani'
https://bugs.winehq.org/show_bug.cgi?id=28140
winetest@luukku.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |winetest@luukku.com
--- Comment #7 from winetest@luukku.com --- (In reply to super_man from comment #6)
I dont know if it really means anything, but
0062:Call KERNEL32.CreateFileA(0cb6e810 "Animations\ANI\creep_idle.ani",80000000,00000001,00000000,00000003, 10000000,00000000) ret=00408131
and later it complains
java.lang.RuntimeException: INTERNAL ERROR: Can't load animation 'Animations/ANI/creep_idle.ani'
Does it mean anything that these slashes are reversed?
1st wine says \ then the internal error has reversed /
https://bugs.winehq.org/show_bug.cgi?id=28140
joaopa jeremielapuree@yahoo.fr changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jeremielapuree@yahoo.fr
--- Comment #8 from joaopa jeremielapuree@yahoo.fr --- Bug still occurs with wine-4.5
https://bugs.winehq.org/show_bug.cgi?id=28140
Paul Gofman gofmanp@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |gofmanp@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=28140
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- URL|http://www.fileplanet.com/2 |https://web.archive.org/web |19558/210000/fileinfo/Theat |/20190331101342/http://down |re-of-War-3:-Korea-Demo |load.fileplanet.com/ftp1/04 | |2011/Theatre-of-War3_Korea_ | |Demo.zip?st=q3u30rO8CagbAe- | |6LMEi7Q&e=1554037634
--- Comment #9 from Anastasius Focht focht@gmx.net --- Hello folks,
I've created a stable snapshot via Internet Archive in case the original site goes down/removes the download.
https://web.archive.org/web/20190331101342/http://download.fileplanet.com/ft...
You might hit "gateway timed out" error due to large download. In that case try again a few times.
Regards
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #10 from Paul Gofman gofmanp@gmail.com --- I downloaded the demo but could not reproduce the problem with Wine 4.5: the game starts just fine for me out of the box after install. I could start "Tutorial battle" and see the landscape, did not test it further.
The game installs Direcx 9 utility libraries and uses native d3dx9_41 out of the box. It can be run with builtin one but requires native d3dcompiler_47 in this case, otherwise when using all builtin explicitly complains about shader compilation in the output.
I tested it in win64 and win32 clean Wine prefix, no difference.
Sha1 sums:
954a1704fd61a8971548af5c8ac218583ffe9d6c ./Theatre-of-War3_Korea_Trial_Version.exe d5dc9dfd9b4a2100df53b85b25ff0c5668deeb3e ./Korea.exe 14733c628b5a0f2dd17b1991ded23a5416cc054c ./Korea.bin
OS: Fedora 29
Maybe something like WINEDEBUG=+relay log from the failing run can give some clue what is it about.
https://bugs.winehq.org/show_bug.cgi?id=28140
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED Component|-unknown |richedit Fixed by SHA1| |ea7186348f48a749ab28ecc405f | |b56601c56e4f8
--- Comment #11 from Anastasius Focht focht@gmx.net --- Hello Paul,
thanks for testing. I did some testing too with various Wine versions and it turns out almost every Wine version in between Wine 1.7.19 and Wine 3.7 causes different crashes/error reports.
I finally settled with https://source.winehq.org/git/wine.git/commitdiff/ea7186348f48a749ab28ecc405... ("riched20: Check para before use in ME_PrevRun.").
Thanks Jactry
From that commit onwards, the launcher and main executable run without crash.
As explained earlier the launcher can't be bypassed, it's required to be functional (parent and child communicate over pipes).
--- snip --- $ git describe --contains ea7186348f48a749ab28ecc405fb56601c56e4f8 | sed 's/~.*//' wine-3.7 --- snip ---
$ wine --version wine-4.5
Regards
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #12 from joaopa jeremielapuree@yahoo.fr --- For me it is not fixed with wine-4.5 ~/.wine/drive_c/Program Files/Battlefront/1C Company/Theatre of War 3 Korea - Trial Version$ wine Korea.exe 0009:fixme:wintrust:WinVerifyTrust unimplemented for 11088336 wine: Unhandled page fault on read access to 0x7ffa86e6 at address 0x7ffa86e6 (thread 0009), starting debugger... 0009:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7ffa86e6
https://bugs.winehq.org/show_bug.cgi?id=28140
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Component|richedit |comctl32 Summary|Theatre of War 3: Korea |Theatre of War 3: Korea |demo 1.2.0 crashes on |demo 1.2.0 crashes on |startup |startup (hook engine can't | |cope with GOT/PIC register | |load code at API entry, | |needs DECLSPEC_HOTPATCH for | |kernel32.SizeofResource) Resolution|FIXED |---
--- Comment #13 from Anastasius Focht focht@gmx.net --- Hello joaopa,
since your backtrace kinda matches the original one, re-opening here.
All the other issues deserved their own bugs, but that's kinda pointless now as they were fixed during the years.
It's another manifestation of bug 37540 ("Multiple games and applications wrapped with Enigma v4 and GG DRM schemes crash on startup (incompatible with use of position independent code (PIC) in Wine dlls)"). Since I never use '-fPIC' builds for Wine the problem was not visible for me.
The game hooks several Windows API and copies opcode bytes from entry to trampoline which can't work with PIC code.
--- snip ---
Wine-gdb> bt #0 0x7ff758d3 in ?? () #1 0x00a798a1 in ?? () #2 0x7e8447b8 in CURSORICON_Load (hInstance=0x7e820000 <__wine_spec_pe_header+31645>, name=0x7f00, width=0, height=0, depth=32, fCursor=1, loadflags=32832) at /home/focht/projects/wine/mainline-src/dlls/user32/cursoricon.c:1817 #3 0x7e847a17 in LoadImageW (hinst=0x0, name=0x7f00, type=2, desiredx=0, desiredy=0, loadflags=32832) at /home/focht/projects/wine/mainline-src/dlls/user32/cursoricon.c:3063 #4 0x00a7a752 in ?? () #5 0x7e845884 in LoadCursorW (hInstance=0x0, name=0x7f00) at /home/focht/projects/wine/mainline-src/dlls/user32/cursoricon.c:2246 #6 0x00a7a496 in ?? () #7 0x7beac69f in ANIMATE_Register () at /home/focht/projects/wine/mainline-src/dlls/comctl32/animate.c:974 #8 0x7bebdea6 in DllMain (hinstDLL=0x7bea0000 <__wine_spec_pe_header+44625>, fdwReason=1, lpvReserved=0x0) at /home/focht/projects/wine/mainline-src/dlls/comctl32/commctrl.c:188 #9 0x7bf68111 in __wine_spec_dll_entry (inst=0x7bea0000 <__wine_spec_pe_header+44625>, reason=1, reserved=0x0) at /home/focht/projects/wine/mainline-src/dlls/winecrt0/dll_entry.c:40 #10 0x7bc59546 in call_dll_entry_point () at /home/focht/projects/wine/mainline-src/dlls/ntdll/loader.c:160 #11 0x7bc5becd in MODULE_InitDLL (wm=0x142070, reason=1, lpReserved=0x0) at /home/focht/projects/wine/mainline-src/dlls/ntdll/loader.c:1223 #12 0x7bc5c2d9 in process_attach (wm=0x142070, lpReserved=0x0) at /home/focht/projects/wine/mainline-src/dlls/ntdll/loader.c:1317 #13 0x7bc5f53f in LdrLoadDll (path_name=0x1b8698, flags=0, libname=0x32e960, hModule=0x32e918) at /home/focht/projects/wine/mainline-src/dlls/ntdll/loader.c:2618 #14 0x7b461041 in load_library (libname=0x32e960, flags=0) at /home/focht/projects/wine/mainline-src/dlls/kernel32/module.c:975 #15 0x7b4611c5 in LoadLibraryExW (libnameW=0x7ffd8c00, hfile=0x0, flags=0) at /home/focht/projects/wine/mainline-src/dlls/kernel32/module.c:1035 #16 0x00a7fcd7 in ?? () #17 0x7b461122 in LoadLibraryExA (libname=0xd4c1a8 "COMCTL32.DLL", hfile=0x0, flags=0) at /home/focht/projects/wine/mainline-src/dlls/kernel32/module.c:1015 #18 0x00a80968 in ?? () #19 0x7b46129f in LoadLibraryA (libname=0xd4c1a8 "COMCTL32.DLL") at /home/focht/projects/wine/mainline-src/dlls/kernel32/module.c:1067 #20 0x00a7ffe6 in ?? () #21 0x00a7f678 in ?? () #22 0x00a80ac3 in ?? () #23 0x00a68a63 in ?? () #24 0x00a6862b in ?? () #25 0x00a68d0f in ?? () #26 0x00a7e28b in ?? () #27 0x00a7e8f7 in ?? () #28 0x00a969f2 in ?? () #29 0x00a9ca48 in ?? () #30 0x00a9d10d in ?? () #31 0x00a9d363 in ?? () #32 0x0040127d in ?? () #33 0x7b46af9a in call_process_entry () at /home/focht/projects/wine/mainline-src/dlls/kernel32/process.c:1189 #34 0x7b46b10e in start_process (entry=0x4025c8, peb=0x7ffdf000) at /home/focht/projects/wine/mainline-src/dlls/kernel32/process.c:1256 #35 0x7b46afa6 in start_process_wrapper () at /home/focht/projects/wine/mainline-src/dlls/kernel32/process.c:1189 #36 0x00000000 in ?? ()
Wine-gdb> x/10x $esp 0x32ddd4: 0x7ffc0968 0x0032ddf4 0x00a798a1 0x7e820000 0x32dde4: 0x7e92537c 0x00d4bf00 0x0032e0cc 0x7e91a000 0x32ddf4: 0x0032de58 0x7e8447b8 --- snip ---
Trampoline continuation, jumping into middle of opcode:
--- snip --- Wine-gdb> x/10i 0x7ffc0968 0x7ffc0968: jmp 0x7b47a0bd <SizeofResource+8> 0x7ffc096d: lods %ds:(%esi),%eax 0x7ffc096e: fiadds (%edi) 0x7ffc0970: add %cl,0x68f82444(%edi) 0x7ffc0976: mov 0x8300d4bd,%al 0x7ffc097b: in (%dx),%al 0x7ffc097c: add $0xe9,%al 0x7ffc097e: mov %al,0x8d80ab8f 0x7ffc0983: dec %esp 0x7ffc0984: and $0x4,%al --- snip ---
Hooked API entry:
--- snip --- Wine-gdb> disas SizeofResource Dump of assembler code for function SizeofResource: 0x7b47a0b5 <+0>: jmp 0x7ffc094f 0x7b47a0ba <+5>: dec %edi 0x7b47a0bb <+6>: sti 0x7b47a0bc <+7>: incl 0x1e6f43 0x7b47a0c2 <+13>: cmpl $0x0,0xc(%ebp) 0x7b47a0c6 <+17>: jne 0x7b47a0cf <SizeofResource+26> 0x7b47a0c8 <+19>: mov $0x0,%eax 0x7b47a0cd <+24>: jmp 0x7b47a0d5 <SizeofResource+32> 0x7b47a0cf <+26>: mov 0xc(%ebp),%eax 0x7b47a0d2 <+29>: mov 0x4(%eax),%eax 0x7b47a0d5 <+32>: pop %ebp 0x7b47a0d6 <+33>: ret $0x8 --- snip ---
Unmodified API entry:
--- snip --- Wine-gdb> disas SizeofResource Dump of assembler code for function SizeofResource: 0x7b47a0b5 <+0>: push %ebp 0x7b47a0b6 <+1>: mov %esp,%ebp 0x7b47a0b8 <+3>: call 0x7b42f028 <__x86.get_pc_thunk.ax> 0x7b47a0bd <+8>: add $0x1e6f43,%eax 0x7b47a0c2 <+13>: cmpl $0x0,0xc(%ebp) 0x7b47a0c6 <+17>: jne 0x7b47a0cf <SizeofResource+26> 0x7b47a0c8 <+19>: mov $0x0,%eax 0x7b47a0cd <+24>: jmp 0x7b47a0d5 <SizeofResource+32> 0x7b47a0cf <+26>: mov 0xc(%ebp),%eax 0x7b47a0d2 <+29>: mov 0x4(%eax),%eax 0x7b47a0d5 <+32>: pop %ebp 0x7b47a0d6 <+33>: ret $0x8 --- snip ---
Lets continue the (bad) practice of cluttering Wine with DECLSPEC_HOTPATCH per case.
* https://bugs.winehq.org/show_bug.cgi?id=45703#c9
* https://bugs.winehq.org/show_bug.cgi?id=45199
...
Regards
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #14 from Paul Gofman gofmanp@gmail.com --- Interesting enough, I don't have PIC disabled in my builds. Yet I suspected that my local build might be golden in some way, so I tested with the downloaded binaries of Wine 4.5 and 4.4 before writing Comment #10. Granted, I did not use winhq binaries but used playonlinux for getting that, and that was wrong.
With PIC enabled the compiled code for SizeofResources is different in my build from the snippet above (and the same as for the binaries I downloaded):
7b47c4b0 <SizeofResource>: 7b47c4b0: 55 push %ebp 7b47c4b1: 89 e5 mov %esp,%ebp 7b47c4b3: 8b 45 0c mov 0xc(%ebp),%eax 7b47c4b6: 85 c0 test %eax,%eax 7b47c4b8: 74 0e je 7b47c4c8 <SizeofResource+0x18> 7b47c4ba: 8b 40 04 mov 0x4(%eax),%eax 7b47c4bd: 5d pop %ebp 7b47c4be: c2 08 00 ret $0x8 7b47c4c1: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi 7b47c4c8: 31 c0 xor %eax,%eax 7b47c4ca: 5d pop %ebp 7b47c4cb: c2 08 00 ret $0x8
Must be compiler version and / or optimization flags. Looks like in my case compiler correctly deduced it doesn't need PIC prolog in this function.
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #15 from joaopa jeremielapuree@yahoo.fr --- Thanks to confirm that wine is faulty. At first, I thought it was my setup.
https://bugs.winehq.org/show_bug.cgi?id=28140
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|REOPENED |NEW Component|comctl32 |kernel32
--- Comment #16 from Anastasius Focht focht@gmx.net --- Hello Paul,
--- quote --- Must be compiler version and / or optimization flags. Looks like in my case compiler correctly deduced it doesn't need PIC prolog in this function. --- quote ---
the only case for '-fPIC' where a load of GOT register is emitted into prolog code is indeed "no optimization". Gcc seems to intentionally generate "bad" code here, including a redundant load of GOT register.
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/kernel32/resource.c#l...
--- snip --- 617 /********************************************************************** 618 * SizeofResource (KERNEL32.@) 619 */ 620 DWORD WINAPI SizeofResource( HINSTANCE hModule, HRSRC hRsrc ) 621 { 622 if (!hRsrc) return 0; 623 return ((PIMAGE_RESOURCE_DATA_ENTRY)hRsrc)->Size; 624 } --- snip ---
Quick check:
--- snip --- $ echo "" | gcc -E -m32 -v - 2>&1 | grep -i cc COLLECT_GCC=/usr/bin/gcc Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux gcc version 8.3.1 20190223 (Red Hat 8.3.1-2) (GCC) COLLECT_GCC_OPTIONS='-E' '-m32' '-v' '-mtune=generic' '-march=i686' /usr/libexec/gcc/x86_64-redhat-linux/8/cc1 -E -quiet -v -imultilib 32 - -m32 -mtune=generic -march=i686 ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/8/include-fixed" ignoring nonexistent directory "/usr/lib/gcc/x86_64-redhat-linux/8/../../../../x86_64-redhat-linux/include" /usr/lib/gcc/x86_64-redhat-linux/8/include COMPILER_PATH=/usr/libexec/gcc/x86_64-redhat-linux/8/:/usr/libexec/gcc/x86_64-redhat-linux/8/:/usr/libexec/gcc/x86_64-redhat-linux/:/usr/lib/gcc/x86_64-redhat-linux/8/:/usr/lib/gcc/x86_64-redhat-linux/ LIBRARY_PATH=/usr/lib/gcc/x86_64-redhat-linux/8/32/:/usr/lib/gcc/x86_64-redhat-linux/8/../../../../lib/:/lib/../lib/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-redhat-linux/8/:/usr/lib/gcc/x86_64-redhat-linux/8/../../../:/lib/:/usr/lib/ COLLECT_GCC_OPTIONS='-E' '-m32' '-v' '-mtune=generic' '-march=i686' --- snip ---
--- snip --- $ pwd /home/focht/projects/wine/mainline-build-i686/dlls/kernel32
$ rm resource.o
$ gcc -m32 -c -o resource.o /home/focht/projects/wine/mainline-src/dlls/kernel32/resource.c -I. \ -I/home/focht/projects/wine/mainline-src/dlls/kernel32 -I../../include \ -I/home/focht/projects/wine/mainline-src/include -D__WINESRC__ -D_KERNEL32_ -D_NORMALIZE_ \ -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wempty-body \ -Wignored-qualifiers -Wno-packed-not-aligned -Wshift-overflow=2 -Wstrict-prototypes -Wtype-limits \ -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith -Wlogical-op \ -gdwarf-2 -gstrict-dwarf -fno-omit-frame-pointer -g
$ /home/focht/projects/wine/mainline-build-x86_64/tools/winegcc/winegcc -o kernel32.dll.so \ -B/home/focht/projects/wine/mainline-build-x86_64/tools/winebuild --sysroot=../.. -m32 \ -fasynchronous-unwind-tables -shared /home/focht/projects/wine/mainline-src/dlls/kernel32/kernel32.spec \ -nodefaultlibs -Wb,-F,KERNEL32.dll -Wl,--image-base,0x7b400000 actctx.o atom.o change.o comm.o \ computername.o console.o cpu.o debugger.o editline.o environ.o except.o fiber.o file.o \ format_msg.o heap.o kernel_main.o lcformat.o locale.o lzexpand.o module.o nameprep.o oldconfig.o \ path.o powermgnt.o process.o profile.o resource.o string.o sync.o tape.o term.o thread.o time.o \ toolhelp.o version.o virtual.o volume.o wer.o locale_rc.res version.res winerror.res \ ../../dlls/winecrt0/libwinecrt0.a -lntdll ../../libs/port/libwine_port.a --- snip ---
With '-O0':
--- snip --- $ gdb kernel32.dll.so -batch -ex 'disassemble SizeofResource' Dump of assembler code for function SizeofResource: 0x7b47a0b5 <+0>: push %ebp 0x7b47a0b6 <+1>: mov %esp,%ebp 0x7b47a0b8 <+3>: call 0x7b42f028 <__x86.get_pc_thunk.ax> 0x7b47a0bd <+8>: add $0x1e6f43,%eax 0x7b47a0c2 <+13>: cmpl $0x0,0xc(%ebp) 0x7b47a0c6 <+17>: jne 0x7b47a0cf <SizeofResource+26> 0x7b47a0c8 <+19>: mov $0x0,%eax 0x7b47a0cd <+24>: jmp 0x7b47a0d5 <SizeofResource+32> 0x7b47a0cf <+26>: mov 0xc(%ebp),%eax 0x7b47a0d2 <+29>: mov 0x4(%eax),%eax 0x7b47a0d5 <+32>: pop %ebp 0x7b47a0d6 <+33>: ret $0x8 End of assembler dump. --- snip ---
With '-O1':
--- snip --- $ gdb kernel32.dll.so -batch -ex 'disassemble SizeofResource' Dump of assembler code for function SizeofResource: 0x7b47b9e2 <+0>: push %ebp 0x7b47b9e3 <+1>: mov %esp,%ebp 0x7b47b9e5 <+3>: mov 0xc(%ebp),%eax 0x7b47b9e8 <+6>: test %eax,%eax 0x7b47b9ea <+8>: je 0x7b47b9f3 <SizeofResource+17> 0x7b47b9ec <+10>: mov 0x4(%eax),%eax 0x7b47b9ef <+13>: pop %ebp 0x7b47b9f0 <+14>: ret $0x8 0x7b47b9f3 <+17>: mov $0x0,%eax 0x7b47b9f8 <+22>: jmp 0x7b47b9ef <SizeofResource+13> End of assembler dump. --- snip ---
With '-O2':
--- snip --- $ gdb kernel32.dll.so -batch -ex 'disassemble SizeofResource' Dump of assembler code for function SizeofResource: 0x7b47c010 <+0>: push %ebp 0x7b47c011 <+1>: mov %esp,%ebp 0x7b47c013 <+3>: mov 0xc(%ebp),%eax 0x7b47c016 <+6>: test %eax,%eax 0x7b47c018 <+8>: je 0x7b47c028 <SizeofResource+24> 0x7b47c01a <+10>: mov 0x4(%eax),%eax 0x7b47c01d <+13>: pop %ebp 0x7b47c01e <+14>: ret $0x8 0x7b47c021 <+17>: lea 0x0(%esi,%eiz,1),%esi 0x7b47c028 <+24>: xor %eax,%eax 0x7b47c02a <+26>: pop %ebp 0x7b47c02b <+27>: ret $0x8 End of assembler dump.
--- snip ---
With '-O3'
--- snip --- $ gdb kernel32.dll.so -batch -ex 'disassemble SizeofResource' Dump of assembler code for function SizeofResource: 0x7b47cd30 <+0>: push %ebp 0x7b47cd31 <+1>: mov %esp,%ebp 0x7b47cd33 <+3>: mov 0xc(%ebp),%eax 0x7b47cd36 <+6>: test %eax,%eax 0x7b47cd38 <+8>: je 0x7b47cd48 <SizeofResource+24> 0x7b47cd3a <+10>: mov 0x4(%eax),%eax 0x7b47cd3d <+13>: pop %ebp 0x7b47cd3e <+14>: ret $0x8 0x7b47cd41 <+17>: lea 0x0(%esi,%eiz,1),%esi 0x7b47cd48 <+24>: xor %eax,%eax 0x7b47cd4a <+26>: pop %ebp 0x7b47cd4b <+27>: ret $0x8 End of assembler dump. --- snip ---
With '-Os'
--- snip --- $ gdb kernel32.dll.so -batch -ex 'disassemble SizeofResource' Dump of assembler code for function SizeofResource: 0x7b47b4c3 <+0>: push %ebp 0x7b47b4c4 <+1>: xor %eax,%eax 0x7b47b4c6 <+3>: mov %esp,%ebp 0x7b47b4c8 <+5>: mov 0xc(%ebp),%edx 0x7b47b4cb <+8>: test %edx,%edx 0x7b47b4cd <+10>: je 0x7b47b4d2 <SizeofResource+15> 0x7b47b4cf <+12>: mov 0x4(%edx),%eax 0x7b47b4d2 <+15>: pop %ebp 0x7b47b4d3 <+16>: ret $0x8 End of assembler dump. --- snip ---
Regards
https://bugs.winehq.org/show_bug.cgi?id=28140
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Fixed by SHA1|ea7186348f48a749ab28ecc405f |002a19599be273b9f947425a820 |b56601c56e4f8 |897816317c378 Resolution|--- |FIXED Status|NEW |RESOLVED
--- Comment #17 from Anastasius Focht focht@gmx.net --- Hello folks,
this is fixed by commit https://source.winehq.org/git/wine.git/commitdiff/002a19599be273b9f947425a82... ("kernel32: Add DECLSPEC_HOTPATCH to SizeofResource().").
Thanks Gijs
--- snip --- $ winedbg --gdb 8
...
Wine-gdb> x/10i 0x7b47a105
0x7b47a105 <SizeofResource>: jmp 0x7ffc094f 0x7b47a10a <SizeofResource>: call 0x7b42f068 <__x86.get_pc_thunk.ax> 0x7b47a10f <SizeofResource+5>: add $0x1e8ef1,%eax 0x7b47a114 <SizeofResource+10>: cmpl $0x0,0xc(%ebp) 0x7b47a118 <SizeofResource+14>: jne 0x7b47a121 <SizeofResource+23> 0x7b47a11a <SizeofResource+16>: mov $0x0,%eax 0x7b47a11f <SizeofResource+21>: jmp 0x7b47a127 <SizeofResource+29> 0x7b47a121 <SizeofResource+23>: mov 0xc(%ebp),%eax 0x7b47a124 <SizeofResource+26>: mov 0x4(%eax),%eax 0x7b47a127 <SizeofResource+29>: pop %ebp
Wine-gdb> x/10i 0x7ffc094f
0x7ffc094f: popl -0x8(%esp) 0x7ffc0953: push $0xd4bd60 0x7ffc0958: sub $0x4,%esp 0x7ffc095b: jmp 0xa79864 0x7ffc0960: mov %edi,%edi 0x7ffc0962: push %ebp 0x7ffc0963: mov %esp,%ebp 0x7ffc0965: jmp 0x7b47a10a <SizeofResource> 0x7ffc096a: lods %ds:(%esi),%eax 0x7ffc096b: fiadds (%edi) --- snip ---
$ du -sh * 952M setup-1.bin 692M setup-2.bin 1.9M setup.exe
$ sha1sum * 679e0c4e3bfd7c367ff1002fbe995378b8686a14 setup-1.bin 042f43f8c5ca5720b1664e35f56f725313d7cd04 setup-2.bin 73128ca5fa7a14e0e6a1466e85857d5b9a45f52c setup.exe
$ wine --version wine-4.5-83-g33c35baa67
Regards
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #18 from joaopa jeremielapuree@yahoo.fr --- I still have the bug with the up-to-date git
wine Korea.exe 000f:err:service:process_send_command receiving command result timed out 000f:fixme:service:scmdatabase_autostart_services Auto-start service L"WineBus" failed to start: 1053 0009:fixme:wintrust:WinVerifyTrust unimplemented for 11088336 wine: Unhandled page fault on read access to 0x7ffa1f16 at address 0x7ffa1f16 (thread 0009), starting debugger... 0009:err:seh:raise_exception Unhandled exception code c0000005 flags 0 addr 0x7ffa1f16
wine --version wine-4.5-138-g8268c47462
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #19 from Paul Gofman gofmanp@gmail.com --- (In reply to joaopa from comment #18)
I still have the bug with the up-to-date git
I suppose it will be easier if we clearly confirm if it is possibly yet another PIC prolog in your local build, or you facing a different crash. Can you test it with prebuilt Wine 4.5 downloaded from playonlinux (64 bit version), which I tested it with successfully? If it will solve the issue, it would be interesting to know your local build compiler version and flags. If it still won't and crash seemingly the same way, maybe +relay log can reveal something.
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #20 from Paul Gofman gofmanp@gmail.com --- .
If it still won't and crash seemingly the same way, maybe +relay log can reveal something.
Sorry, +seh,+relay: WINEDEBUG=+seh,+relay
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #21 from joaopa jeremielapuree@yahoo.fr --- Created attachment 64096 --> https://bugs.winehq.org/attachment.cgi?id=64096 Console output with relay and seh channels enabled
With wine downloaded by playonlinux, the demo launches. With git wine compiled by myself, the demo crashes. I do not use any special compile flags. I compile with ./configure make
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #22 from Paul Gofman gofmanp@gmail.com --- Created attachment 64098 --> https://bugs.winehq.org/attachment.cgi?id=64098 Make kernel32.FindClose() hotpatchable.
(In reply to joaopa from comment #21)
With wine downloaded by playonlinux, the demo launches. With git wine compiled by myself, the demo crashes. I do not use any special compile flags. I compile with ./configure make
Well, I could reproduce the crash now. Does this patch help?
Yeah, Winapi has a lot of functions and hotpatching madness does not seem to follow an obvious pattern in choosing them.
https://bugs.winehq.org/show_bug.cgi?id=28140
--- Comment #23 from joaopa jeremielapuree@yahoo.fr --- Thanks Paul. With your last patch, the crash is gone.
https://bugs.winehq.org/show_bug.cgi?id=28140
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |REOPENED Summary|Theatre of War 3: Korea |Theatre of War 3: Korea |demo 1.2.0 crashes on |demo 1.2.0 crashes on |startup (hook engine can't |startup (hook engine can't |cope with GOT/PIC register |cope with GOT/PIC register |load code at API entry, |load code at API entry, |needs DECLSPEC_HOTPATCH for |needs DECLSPEC_HOTPATCH for |kernel32.SizeofResource) |kernel32.SizeofResource and | |kernel32.FindClose) Resolution|FIXED |---
--- Comment #24 from Anastasius Focht focht@gmx.net --- Hello folks,
re-opening and refining summary since the other patch now references this bug 28140 as well (no release references the ticket yet).
Regards
https://bugs.winehq.org/show_bug.cgi?id=28140
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Fixed by SHA1|002a19599be273b9f947425a820 |d62187105e37c0729775ae45d16 |897816317c378 |1ba74302ce5a5 Status|REOPENED |RESOLVED
--- Comment #25 from Anastasius Focht focht@gmx.net --- Hello folks,
this should be finally fixed by commit https://source.winehq.org/git/wine.git/commitdiff/d62187105e37c0729775ae45d1... ("kernel32: Add DECLSPEC_HOTPATCH to FindClose().")
Thanks Paul
$ wine --version wine-4.5-222-g8ee1e3453e
Regards
https://bugs.winehq.org/show_bug.cgi?id=28140
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #26 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 4.6.
https://bugs.winehq.org/show_bug.cgi?id=28140
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|--- |4.0.x
https://bugs.winehq.org/show_bug.cgi?id=28140
Michael Stefaniuc mstefani@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Target Milestone|4.0.x |---
--- Comment #27 from Michael Stefaniuc mstefani@winehq.org --- Removing the 4.0.x milestone from bug fixes included in 4.0.1.