Re:Raw Linux Threads via System Calls
by 0x0 on Sunday June 07, 2015 @01:50PM
(#9675622)
How can the thread free its own stack before calling exit? Doesn't it need a stack to call exit safely?
[ Parent
| on HN ]
In general yes, but the code in this case appears to be supplying its own version of exit, that just does a SYSCALL instruction. The SYSCALL instruction doesn't need a stack.
Is there no risk of an interrupt or a signal happening in between un-mmap'ing and calling exit, that would cause stack pushes?
That is a risk, which is why you need to block all signals using the sigprocmask syscall before unmapping your stack.
Or you just don't have signal-handling functions. Signals only touch the stack if you handle them via functions. The default signal dispositions all either kill the process or do nothing, so they don't touch the stack.