Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : check current_heap before SET_RAW_MEM and restore it after UNSET_RAW_MEM
[simgrid.git] / src / mc / mc_dpor.c
index 707ed9b..ac40618 100644 (file)
@@ -13,6 +13,9 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_dpor, mc,
  */
 void MC_dpor_init()
 {
+  
+  raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
+
   mc_state_t initial_state = NULL;
   smx_process_t process;
   
@@ -42,6 +45,12 @@ void MC_dpor_init()
   xbt_fifo_unshift(mc_stack_safety, initial_state);
 
   MC_UNSET_RAW_MEM;
+
+  if(raw_mem_set)
+    MC_SET_RAW_MEM;
+  else
+    MC_UNSET_RAW_MEM;
+  
     
   /* FIXME: Update Statistics 
      mc_stats->state_size +=
@@ -55,6 +64,9 @@ void MC_dpor_init()
  */
 void MC_dpor(void)
 {
+
+  raw_mem_set = (mmalloc_get_current_heap() == raw_heap);
+
   char *req_str;
   int value;
   smx_simcall_t req = NULL, prev_req = NULL;
@@ -214,6 +226,13 @@ void MC_dpor(void)
   }
   MC_print_statistics(mc_stats);
   MC_UNSET_RAW_MEM;
+
+  if(raw_mem_set)
+    MC_SET_RAW_MEM;
+  else
+    MC_UNSET_RAW_MEM;
+  
+
   return;
 }