wow, this is a nasty bug...
[model-checker.git] / snapshot.cc
index 20980015fe50d9678e67a606f37e2a3b934aa3e6..7105d2c6a170905bc3dc4250ea3c3b365381db01 100644 (file)
@@ -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 ){