Files
velzieandClaude Opus 5.5 fb2733e838 page: a W3 process's branch to non-executable memory goes to Wine's fault hook
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
2026-10-11 19:26:02 -04:00
..