mirror of
https://github.com/HeyPuter/gex.git
synced 2026-11-13 20:12:43 -10:00
The page recorded ntdll.so's fault hook (gex.fault_hook) and never called it (W3.7): a W3 program's branch to non-executable memory ended the thread with SIGSEGV, where natively (shims/native deliver_guest_fault_kind) Wine gets an access violation (execute) and dispatches it. Windows 7's comctl32 v6 relies on that: an Edit control calls LpkEditControl's table, null without lpk.dll, and the exception is caught (natively, "dispatch_user_callback ignoring exception c0000005"). In the page the first Edit control killed the dialog: mspaint's Save As never opened. The shim stages the fault (gex_fault_take) with the PC in the context and traps; the run loop and the nested loops (call-out, exception dispatch) call the hook on the program's C stack below the guest's, as natively, and go on where it leaves the context. tests/nt/src/nullcall.c: three calls through a null pointer, caught by a vectored handler. In the page (W's frozen W3 bundle plus this exe): exit 139 before, "nullcall caught 3" and exit 0 after. mspaint's Save As now opens in the page (gooner, 13.1 s after the click). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_ea9f71488b6e448da93d6c2dabf4879c