https://bugs.winehq.org/show_bug.cgi?id=46143
Bug ID: 46143 Summary: Multiple Windows 10 ARM64 apps crash due to unimplemented function ntdll.dll.RtlAddFunctionTable (and friends) Product: Wine Version: 3.20 Hardware: aarch64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
as it says.
NOTE: Some apps need patched Linux kernel due to bug 46132 ("Multiple Windows 10 ARM64 apps crash with illegal instruction fault due to access of ARMv8 PMU cycle counter via 'PMCCNTR_EL0' register in EL0 (Linux kernel disallows access by default)") to come that far.
--- snip --- $ WINEDEBUG=+seh,+loaddll,+process wine64 ./gatherosstate.exe ... 0009:trace:loaddll:load_native_dll Loaded L"Z:\home\focht\projects\woa-winrt\win10apps\arm64\gatherosstate.exe" at 0x140000000: native 0009:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\msvcrt.dll" at 0x7f838d0000: builtin 0009:trace:loaddll:load_builtin_dll Loaded L"C:\windows\system32\advapi32.dll" at 0x7f83720000: builtin 0009:trace:process:NtQueryInformationProcess (0xffffffffffffffff,0x00000007,0x22f988,0x00000008,(nil)) 0009:trace:seh:raise_exception info[0]=000000014009485e 0009:trace:seh:raise_exception info[1]=0000000140094802 wine: Call from 0x7bcd0104 to unimplemented function ntdll.dll.RtlAddFunctionTable, aborting 0009:trace:seh:call_stack_handlers calling handler at 0x7b4d6330 code=80000100 flags=1 wine: Unimplemented function ntdll.dll.RtlAddFunctionTable called at address 0x7bcd0104 (thread 0009), starting debugger... 0009:trace:seh:start_debugger Starting debugger "winedbg --auto 8 36" ... Unhandled exception: unimplemented function ntdll.dll.RtlAddFunctionTable called in 64-bit code (0x000000007bcd0104). Register dump: ARM64 EL0t Mode Pc:000000007bcd0104 Sp:000000000022f440 Lr:000000007bcd22e8 Cpsr:60000000(-ZC-) x0: 000000000022f468 x1: 000000000022f840 x2: 0000000000000001 x3: 0000000000000008 x4: 0000007f83abc360 x5: 000000007bd44b78 x6: 000000007bd44b8c x7: 0000000000001000 x8: 000000000022f468 x9: 000000000022f468 x10:0000000000000002 x11:000000000022f840 x12:000000000022f820 x13:0000000000131000 x14:0000000000000000 x15:000000000022f000 ip0:000000007bc91f38 ip1:0000007f83f48860 x18:000000007ffd8000 x19:0000000000000000 x20:0000000000000000 x21:0000000000350000 x22:000000007b4eaedb x23:000000007b825364 x24:000000007b4eaeee x25:000000007b4eaf22 x26:000000007b4eaf38 x27:000000007b4ee926 x28:000000007b4a2b60 Fp:000000000022f810 ... Backtrace: =>0 0x000000007bcd0104 RtlCaptureContext+0xa4() in ntdll (0x000000000022f810) 1 0x000000007bcd22e8 RtlRaiseException+0x33(rec=0x22f820) [/home/focht/projects/wine/mainline-src/dlls/ntdll/signal_arm64.c:976] in ntdll (0x000000000022f810) 2 0x000000007bcd22e8 RtlRaiseException+0x33(rec=0x14002f75c) [/home/focht/projects/wine/mainline-src/dlls/ntdll/signal_arm64.c:976] in ntdll (0x000000000022f8d0) 3 0x000000007bc91fa4 stub_entry_point+0x6b(dll=*** invalid address 0xffff9dc735768103 ***, name=*** invalid address 0x880200802 ***, ret_addr=0x0(nil)) [/home/focht/projects/wine/mainline-src/dlls/ntdll/loader.c:231] in ntdll (0x000000000022f910) 4 0x000000014002f75c in gatherosstate (+0x2f75b) (0x000000000022f940) 5 0x000000014002fc30 in gatherosstate (+0x2fc2f) (0x000000000022f940) 0x000000007bcd0104 RtlCaptureContext+0xa4 in ntdll: be_arm64_disasm_one_insn: not done
Modules: Module Address Debug info Name (20 modules) ELF 7b400000- 7b826000 Deferred kernel32<elf> -PE 7b420000- 7b826000 \ kernel32 ELF 7bc00000- 7bd45000 Dwarf ntdll<elf> -PE 7bc20000- 7bd45000 \ ntdll ELF 7c000000- 7c004000 Deferred <wine-loader> PE 140000000- 140099000 Export gatherosstate ... ELF 7f83f79000- 7f84134000 Dwarf libwine.so.1 ELF 7f84136000- 7f84168000 Deferred ld-linux-aarch64.so.1 ELF 7f84169000- 7f8416a000 Deferred [vdso].so Threads: process tid prio (all id:s are in hex) 00000008 (D) Z:\home\focht\projects\woa-winrt\win10apps\arm64\gatherosstate.exe 00000009 0 <== ... System information: Wine build: wine-3.20-41-gbae592cc96 Platform: arm64 Version: Windows 7 Host system: Linux Host version: 4.18.14-yocto-standard --- snip ---
Wine source:
https://source.winehq.org/git/wine.git/blob/HEAD:/dlls/ntdll/ntdll.spec#l436
--- snip --- 436 @ cdecl -arch=arm,x86_64 RtlAddFunctionTable(ptr long long) ... 546 @ cdecl -arch=arm,x86_64 RtlDeleteFunctionTable(ptr) ... 780 @ stdcall -arch=arm,x86_64 RtlLookupFunctionEntry(long ptr ptr) --- snip ---
Some more pointers:
https://docs.microsoft.com/en-us/cpp/build/arm64-windows-abi-conventions?vie...
https://docs.microsoft.com/en-us/cpp/build/arm64-exception-handling?view=vs-...
https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggest...
Regards