make sigaltstack failure nonfatal and clean up on thread return (#52055)
Since we already could handle recursion onto the altstack, we can also
handle recursion onto the main stack as well (at the cost of losing the
ability to handle stackoverflow when this allocation fails). In the
future, on mach, we could consider just using a single stack for
handling stackoverflow and use a `_resetstkoflw`-like and/or
`collect_backtrace_fiber`-like mechanism (like Windows) to pass it from
one thread to the next that sequentially needs to use it.
Closes #50786