Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
model-checker : comment backtrace and add ignore mechanism in mmalloc metadata
[simgrid.git] / src / mc / mc_global.c
index 394d2a9..6cd26b8 100644 (file)
@@ -180,7 +180,7 @@ void MC_init(){
   get_binary_plt_section();
 
   MC_ignore_data_bss(&end_raw_heap, sizeof(end_raw_heap));
-
   /* Get global variables */
   MC_get_global_variables(xbt_binary_name);
   MC_get_global_variables(libsimgrid_path);
@@ -197,6 +197,9 @@ void MC_init(){
   MC_ignore_stack("_throw_ctx", "*");
   MC_ignore_stack("ctx", "*");
 
+  MC_ignore_stack("next_context", "smx_ctx_sysv_suspend_serial");
+  MC_ignore_stack("i", "smx_ctx_sysv_suspend_serial");
+
   if(raw_mem_set)
     MC_SET_RAW_MEM;
 
@@ -286,6 +289,7 @@ void MC_exit(void)
 {
   xbt_free(mc_time);
   MC_memory_exit();
+  xbt_abort();
 }
 
 
@@ -748,8 +752,10 @@ void MC_ignore_heap(void *address, size_t size){
     
     if(((xbt_mheap_t)std_heap)->heapinfo[region->block].type == 0){
       region->fragment = -1;
+      ((xbt_mheap_t)std_heap)->heapinfo[region->block].busy_block.ignore = 1;
     }else{
       region->fragment = ((uintptr_t) (ADDR2UINT (address) % (BLOCKSIZE))) >> ((xbt_mheap_t)std_heap)->heapinfo[region->block].type;
+      ((xbt_mheap_t)std_heap)->heapinfo[region->block].busy_frag.ignore[region->fragment] = 1;
     }
     
   }