Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
No need to have this variable global.
[simgrid.git] / src / simix / smx_global.c
index 7df250c..fffa264 100644 (file)
@@ -40,11 +40,17 @@ static void _XBT_CALL inthandler(int ignored)
   exit(1);
 }
 
+#ifndef WIN32
 static void _XBT_CALL segvhandler(int signum, siginfo_t *siginfo, void *context)
 {
   if (siginfo->si_signo == SIGSEGV && siginfo->si_code == SEGV_ACCERR) {
     fprintf(stderr,
-            "Access violation detected. This can result from a stack overflow.\n"
+            "Access violation detected.\n"
+            "This can result from a programming error in your code or, although less likely,\n"
+            "from a bug in SimGrid itself.  This can also be the sign of a bug in the OS or\n"
+            "in third-party libraries.  Failing hardware can sometimes generate such errors\n"
+            "too.\n"
+            "Finally, if nothing of the above applies, this can result from a stack overflow.\n"
             "Try to increase stack size with --cfg=contexts/stack_size (current size is %d KiB).\n",
             smx_context_stack_size / 1024);
     if (XBT_LOG_ISENABLED(simix_kernel, xbt_log_priority_debug)) {
@@ -98,6 +104,7 @@ static void install_segvhandler(void)
   }
 }
 
+#endif
 /********************************* SIMIX **************************************/
 
 XBT_INLINE double SIMIX_timer_next(void)
@@ -155,9 +162,10 @@ void SIMIX_global_init(int *argc, char **argv)
     /* Prepare to display some more info when dying on Ctrl-C pressing */
     signal(SIGINT, inthandler);
 
+#ifndef WIN32
     /* Install SEGV handler */
     install_segvhandler();
-
+#endif
     /* register a function to be called by SURF after the environment creation */
     sg_platf_init();
     sg_platf_postparse_add_cb(SIMIX_post_create_environment);
@@ -183,9 +191,9 @@ void SIMIX_global_init(int *argc, char **argv)
  *
  * This functions remove the memory used by SIMIX
  */
-int cleaned = 0;
 void SIMIX_clean(void)
 {
+  static int cleaned = 0;
 #ifdef TIME_BENCH_PER_SR
   smx_ctx_raw_new_sr();
 #endif