Guest faults are delivered on the guest stack, and the managed handler ran there. The runtime only knows the thread's own stack; Windows swaps the TEB stack bounds while guest code runs, but POSIX has no equivalent. A garbage collection during a guest fault then misread the thread's frames and reported garbage object references, and the process failed with "attempted to call a UnmanagedCallersOnly method from managed code". A small native trampoline now moves to the host stack below the frames that entered guest code before it calls the managed handler. |
||
|---|---|---|
| .. | ||
| SharpEmu.CLI | ||
| SharpEmu.Core | ||
| SharpEmu.DebugClient | ||
| SharpEmu.Debugger | ||
| SharpEmu.GUI | ||
| SharpEmu.HLE | ||
| SharpEmu.LibAtrac9 | ||
| SharpEmu.Libs | ||
| SharpEmu.Logging | ||
| SharpEmu.ShaderCompiler | ||
| SharpEmu.ShaderCompiler.Metal | ||
| SharpEmu.ShaderCompiler.Vulkan | ||
| SharpEmu.SourceGenerators | ||