mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-06-27 14:58:30 +00:00
Improve stack overflow recovery
It's now possible to use sigaltstack() to recover from stack overflows on Windows. Several bugs in sigaltstack() have been fixed, for all our supported platforms. There's a newer better example showing how to use this, along with three independent unit tests just to further showcase the various techniques.
This commit is contained in:
parent
1694edf85c
commit
4631d34d0d
24 changed files with 590 additions and 274 deletions
|
@ -169,6 +169,9 @@ static abi wontreturn void WinInit(const char16_t *cmdline) {
|
|||
uint32_t old;
|
||||
__imp_VirtualProtect((void *)stackaddr, stacksize, kNtPageReadwrite, &old);
|
||||
}
|
||||
uint32_t oldattr;
|
||||
__imp_VirtualProtect((void *)stackaddr, GetGuardSize(),
|
||||
kNtPageReadwrite | kNtPageGuard, &oldattr);
|
||||
_mmi.p[0].x = stackaddr >> 16;
|
||||
_mmi.p[0].y = (stackaddr >> 16) + ((stacksize - 1) >> 16);
|
||||
_mmi.p[0].prot = prot;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue