mirror of
https://github.com/HeyPuter/gex.git
synced 2026-11-13 18:34:21 -10:00
A guest call from native Wine that names no argument bytes counted as left only with the stack more than NATIVE_UNWOUND (512 bytes) above its frame, and gexrt64 asked gex to leave it (NATIVE_LEFT) only past the same margin. A jump out of the callback to the guest frame that called the native function lands closer than that when the native frames between are small, so each such jump held one more call-out open: the page's host stack ran out within 3000 jumps, and natively the call-outs nested hundreds deep. A call-out whose stack the TEB names (callout_stack_top) is now left by any stack pointer above its frame on that stack, on both hosts, and gexrt64 asks at any such entry (Wine pin). The return to the pad still matches within NATIVE_UNWOUND. cbthrow passes on the page as well; 100000 jumps natively and on the page keep at most a few call-outs open. Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_853378b774d645b4ac78b16d9af91a31