X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/7ce270272856fcab2790a35bcefb9d6e0fb52423..d1881aa45492b97948d3eff7b8c5357571e2142d:/src/mc/mc_global.c diff --git a/src/mc/mc_global.c b/src/mc/mc_global.c index 562eb37978..43d50974e9 100644 --- a/src/mc/mc_global.c +++ b/src/mc/mc_global.c @@ -138,8 +138,11 @@ void MC_do_the_modelcheck_for_real() { mc_comp_times = xbt_new0(s_mc_comparison_times_t, 1); MC_UNSET_RAW_MEM; - if((_sg_mc_dot_output_file != NULL) && (_sg_mc_dot_output_file[0]!='\0')) + if((_sg_mc_dot_output_file != NULL) && (_sg_mc_dot_output_file[0]!='\0')){ + MC_SET_RAW_MEM; MC_init_dot_output(); + MC_UNSET_RAW_MEM; + } if (!_sg_mc_property_file || _sg_mc_property_file[0]=='\0') { if (mc_reduce_kind==e_mc_reduce_unset) @@ -213,6 +216,9 @@ void MC_init(){ MC_ignore_stack("next_context", "smx_ctx_sysv_suspend_serial"); MC_ignore_stack("i", "smx_ctx_sysv_suspend_serial"); + /* Ignore local variable about time used for tracing */ + MC_ignore_stack("start_time", "*"); + MC_ignore_data_bss(&mc_comp_times, sizeof(mc_comp_times)); MC_ignore_data_bss(&mc_snapshot_comparison_time, sizeof(mc_snapshot_comparison_time)); MC_ignore_data_bss(&mc_time, sizeof(mc_time)); @@ -749,6 +755,12 @@ void MC_assert(int prop) XBT_INFO("Counter-example execution trace:"); MC_dump_stack_safety(mc_stack_safety); MC_print_statistics(mc_stats); + MC_SET_RAW_MEM; + if((_sg_mc_dot_output_file != NULL) && (_sg_mc_dot_output_file[0]!='\0')){ + fprintf(dot_output, "}\n"); + fclose(dot_output); + } + MC_UNSET_RAW_MEM; xbt_abort(); } } @@ -844,10 +856,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; + ((xbt_mheap_t)std_heap)->heapinfo[region->block].busy_block.ignore++; }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; + ((xbt_mheap_t)std_heap)->heapinfo[region->block].busy_frag.ignore[region->fragment]++; } if(mc_heap_comparison_ignore == NULL){