[Bug 46155] Windows PowerShell Core 6.1 for ARM64 crashes on unimplemented function KERNEL32.dll.RaiseFailFastException
wine-bugs at winehq.org
wine-bugs at winehq.org
Mon Nov 19 15:20:48 CST 2018
https://bugs.winehq.org/show_bug.cgi?id=46155
--- Comment #3 from Anastasius Focht <focht at gmx.net> ---
Hello André,
here is the output as requested, with the patch applied.
--- snip ---
...
002b:Call KERNEL32.VirtualAlloc(00000000,003a0000,00202000,00000004)
ret=0083fb90
002b:Ret KERNEL32.VirtualAlloc() retval=18f30000 ret=0083fb90
002b:Call KERNEL32.VirtualAlloc(18f30000,00090168,00001000,00000004)
ret=0083fbdc
002b:Ret KERNEL32.VirtualAlloc() retval=18f30000 ret=0083fbdc
002b:trace:seh:raise_exception code=c0000005 flags=0 addr=0x83fc2c pc=83fc2c
tid=002b
002b:trace:seh:raise_exception info[0]=0000000000000000
002b:trace:seh:raise_exception info[1]=0000000018f30000
002b:trace:seh:raise_exception x0=0000000018f30000 x1=000000007bd43e1f
x2=0000000000000000 x3=0000000000000000
002b:trace:seh:raise_exception x4=000000007bd43e1f x5=000000007bd43de0
x6=0000007f86c9ef10 x7=0000000000000002
002b:trace:seh:raise_exception x8=000000000000c000 x9=000000000000003f
x10=0000000000000001 x11=0000000000000000
002b:trace:seh:raise_exception x12=000000000000003a x13=0000000018f30040
x14=ffffffffffffffc1 x15=000000007bd25a70
002b:trace:seh:raise_exception x16=000000007bd26008 x17=0000007f86d35dc0
x18=000000007ffd8000 x19=0000000000a77348
002b:trace:seh:raise_exception x20=0000000018f30000 x21=0000000018f30000
x22=0000000000f30000 x23=0000000000090168
002b:trace:seh:raise_exception x24=0000000000a6a270 x25=00000000000000c4
x26=0000000000a69ea8 x27=0000000000030000
002b:trace:seh:raise_exception x28=0000000000595290 fp=00000000002ada30
lr=000000000083fbdc sp=00000000002ada30
002b:trace:seh:raise_exception pc=000000000083fc2c
002b:trace:seh:call_vectored_handlers calling handler at 0x5e4550 code=c0000005
flags=0
002b:Call KERNEL32.GetLastError() ret=005e458c
002b:Ret KERNEL32.GetLastError() retval=0000007a ret=005e458c
002b:Call KERNEL32.IsDebuggerPresent() ret=007665f4
002b:Ret KERNEL32.IsDebuggerPresent() retval=00000000 ret=007665f4
...
002b:err:eventlog:ReportEventW L"Application: pwsh.exe\nCoreCLR Version:
4.6.26919.2\nDescription: The process was terminated due to an internal error
in the .NET Runtime at IP 000000000083FC2C (0000000000570000) with exit code
80131506.\n"
...
002b:Call KERNEL32.IsDebuggerPresent() ret=005e0498
002b:Ret KERNEL32.IsDebuggerPresent() retval=00000000 ret=005e0498
...
002b:Call KERNEL32.RaiseFailFastException(002ad990,002ad600,00000000)
ret=005e05fc
wine: Unhandled page fault on read access to 0x18f30000 at address 0x83fc2c
(thread 002b), starting debugger...
002b:trace:seh:start_debugger Starting debugger "winedbg --auto 42 160"
...
002b:trace:process:CreateProcessInternalW starting
L"C:\\windows\\system32\\winedbg.exe" as Win64 binary (10000000-10050000,
ARM64)
002b:trace:process:CreateProcessInternalW started process pid 002d tid 002e
002b:Ret KERNEL32.RaiseFailFastException() retval=00000001 ret=005e05fc
002b:Call KERNEL32.SetEvent(00000064) ret=00922a20
002b:Ret KERNEL32.SetEvent() retval=00000001 ret=00922a20
002b:Call KERNEL32.SetEvent(00000060) ret=00922a30
002b:Ret KERNEL32.SetEvent() retval=00000001 ret=00922a30
002b:Call KERNEL32.IsDebuggerPresent() ret=005e0660
002b:Ret KERNEL32.IsDebuggerPresent() retval=00000001 ret=005e0660
002b:Call KERNEL32.SetErrorMode(00000000) ret=005e06a0
002b:trace:process:NtQueryInformationProcess
(0xffffffffffffffff,0x0000000c,0x2abb78,0x00000004,(nil))
002b:Ret KERNEL32.SetErrorMode() retval=00000000 ret=005e06a0
002b:Call KERNEL32.SetErrorMode(00000002) ret=005e06ac
002b:trace:process:NtQueryInformationProcess
(0xffffffffffffffff,0x0000000c,0x2abb78,0x00000004,(nil))
002b:Ret KERNEL32.SetErrorMode() retval=00000000 ret=005e06ac
002b:Call KERNEL32.IsDebuggerPresent() ret=005e0764
002b:Ret KERNEL32.IsDebuggerPresent() retval=00000001 ret=005e0764
002b:Call KERNEL32.DebugBreak() ret=005e0774
002b:trace:seh:raise_exception code=80000003 flags=0 addr=0x7f86ce72b8
pc=7f86ce72b8 tid=002b
002b:trace:seh:raise_exception x0=0000000000000000 x1=0000000000000005
x2=00000000002abc20 x3=0000000000000000
002b:trace:seh:raise_exception x4=000000007bd43e0d x5=000000007bd43de0
x6=0000007f86c9ef10 x7=0000000000000002
002b:trace:seh:raise_exception x8=0000000000000081 x9=000000007bcd2ef8
x10=0000000000000001 x11=0000000000000000
002b:trace:seh:raise_exception x12=000000000000000f x13=0000000000000000
x14=ffffffffffffffd3 x15=000000007bd25a70
002b:trace:seh:raise_exception x16=000000007bd26138 x17=0000007f86ce72b0
x18=000000007ffd8000 x19=00000000002abc20
002b:trace:seh:raise_exception x20=0000000000a6a280 x21=00000000002ad310
x22=0000000000074520 x23=000000000006e680
002b:trace:seh:raise_exception x24=0000000000947000 x25=0000000000000000
x26=0000000000000001 x27=0000000000947000
002b:trace:seh:raise_exception x28=00000000002abcf0 fp=00000000002abb80
lr=000000007bcd2f18 sp=00000000002abb70
002b:trace:seh:raise_exception pc=0000007f86ce72b8
0x0000007f86ce72b8 kill+0x8 in libc.so.6: be_arm64_disasm_one_insn: not done
...
Modules:
Module Address Debug info Name (63 modules)
PE 3d0000- 45d000 Deferred hostpolicy
PE 570000- ac8000 Export coreclr
ELF 7b400000- 7b827000 Dwarf kernel32<elf>
\-PE 7b420000- 7b827000 \ kernel32
ELF 7bc00000- 7bd45000 Dwarf ntdll<elf>
\-PE 7bc20000- 7bd45000 \ ntdll
ELF 7c000000- 7c004000 Deferred <wine-loader>
PE 140000000- 140042000 Deferred pwsh
PE 180000000- 18005d000 Deferred hostfxr
...
Threads:
process tid prio (all id:s are in hex)
...
0000002a (D) Z:\home\focht\projects\woa-winrt\powershell611-arm64\pwsh.exe
0000002c 0
0000002b 0 <==
System information:
Wine build: wine-3.20-149-g04fe35a0a3
Platform: arm64
Version: Windows 7
Host system: Linux
--- snip ---
One potential problem is that the function returns after the debugger/crash
reporter process is started. The app code (CLR) raises another exception ->
debugbreak. So one gets some sort of double-exception race, although only the
first one is seen by winedbg/crash reporter.
That kind of "runaway" problem is essentially the same as bug 24038
("kernel32.UnhandledExceptionFilter: ensure that registered JIT debugger can
attach and collect debugging info before return ("Cannot get info on module
while no process is loaded")" -> different problem.
Anyway, this is still better than abusing unhandled stub exception which just
hides the actual exception.
@Zeb:
--- quote ---
Along the lines of bug 45656, is there really any point implementing this
function?
--- quote ---
Bug 45656 is certainly a different class than this one. This one is part of
public userland API and actually being called by apps or compiler
generated/injected code.
* Microsoft Control Flow Guard (CFG) feature:
https://blogs.msdn.microsoft.com/vcblog/2014/12/08/visual-studio-2015-preview-work-in-progress-security-feature/
* Microsoft .NET Core CLR:
https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/Interop/Interop.manual.cs#L41
* Google Chromium project:
https://chromium.googlesource.com/chromium/src/+/master/base/debug/invalid_access_win.cc#19
* http://kirkshoop.github.io/2011/11/01/failfast.html (just a random blog
entry)
Regards
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list