Add sanity checks to __prep_signal_handler()
authorBarret Rhoden <brho@cs.berkeley.edu>
Mon, 11 Jul 2016 19:53:45 +0000 (15:53 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 19 Jul 2016 15:43:10 +0000 (11:43 -0400)
commite13318fc9a77c502c4b1086e9a9cb6929905b079
tree18edd186bde6c8ce9035083e7f9d9a66ff67aa14
parentdf1135d0583e55fd85f0dab460453af4511159cf
Add sanity checks to __prep_signal_handler()

If a uthread messed up its stack pointer and then segfaulted, the uthread
code would crash nastily when we attempted to inject the SIGSEGV.  This
sanity check will catch common problems in this area.

For instance, put this in pthread_test:

asm volatile ("mov $0, %rsp; push %rax");

Ultimately, using the uthread's stack in this manner is a bit dangerous.

This is especially true since  __prep_signal_handler() basically does an
alloca for the context and ancillary state.  So any 2LS that uses signals
needs a suitable large uthread stack.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
user/parlib/signal.c