X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=snapshot.cc;h=7105d2c6a170905bc3dc4250ea3c3b365381db01;hb=5dccc85bdc3836239c2a8124541074366defb573;hp=20980015fe50d9678e67a606f37e2a3b934aa3e6;hpb=977bc05c795281f164c11861de48b0b0e2111cae;p=model-checker.git diff --git a/snapshot.cc b/snapshot.cc index 2098001..7105d2c 100644 --- a/snapshot.cc +++ b/snapshot.cc @@ -134,8 +134,15 @@ extern "C" { #endif void initSnapShotLibrary(unsigned int numbackingpages, unsigned int numsnapshots, unsigned int nummemoryregions, unsigned int numheappages, MyFuncPtr entryPoint){ #if USE_CHECKPOINTING + /* Setup a stack for our signal handler.... */ + stack_t ss; + ss.ss_sp = MYMALLOC(SIGSTACKSIZE); + ss.ss_size = SIGSTACKSIZE; + ss.ss_flags = 0; + sigaltstack(&ss, NULL); + struct sigaction sa; - sa.sa_flags = SA_SIGINFO | SA_NODEFER | SA_RESTART; + sa.sa_flags = SA_SIGINFO | SA_NODEFER | SA_RESTART | SA_ONSTACK; sigemptyset( &sa.sa_mask ); sa.sa_sigaction = HandlePF; if( sigaction( SIGSEGV, &sa, NULL ) == -1 ){