X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/98d39b2548953d312238c429ce935f7000ffa120..f5a0234ae3d4adeb86ed57763ff23aba502a186f:/src/mc/mc_compare.c diff --git a/src/mc/mc_compare.c b/src/mc/mc_compare.c index a77f39ae85..41cc772f08 100644 --- a/src/mc/mc_compare.c +++ b/src/mc/mc_compare.c @@ -249,17 +249,20 @@ static int compare_global_variables(int region_type, mc_mem_region_t r1, mc_mem_ size_t offset; void *start_data; + mc_object_info_t object_info = NULL; + mc_object_info_t other_object_info = NULL; if(region_type == 2){ - variables = mc_global_variables_binary; - types = mc_variables_type_binary; - other_types = mc_variables_type_libsimgrid; + object_info = mc_binary_info; + other_object_info = mc_libsimgrid_info; start_data = start_data_binary; }else{ - variables = mc_global_variables_libsimgrid; - types = mc_variables_type_libsimgrid; - other_types = mc_variables_type_binary; + object_info = mc_libsimgrid_info; + other_object_info = mc_binary_info; start_data = start_data_libsimgrid; } + variables = object_info->global_variables; + types = object_info->types; + other_types = other_object_info->types; xbt_dynar_foreach(variables, cursor, current_var){ @@ -314,9 +317,9 @@ static int compare_local_variables(mc_snapshot_stack_t stack1, mc_snapshot_stack offset1 = (char *)current_var1->address - (char *)std_heap; offset2 = (char *)current_var2->address - (char *)std_heap; if(current_var1->region == 1) - res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_variables_type_libsimgrid, mc_variables_type_binary, current_var1->type, 0, 1, start_data_libsimgrid, 0); + res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_libsimgrid_info->types, mc_binary_info->types, current_var1->type, 0, 1, start_data_libsimgrid, 0); else - res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_variables_type_binary, mc_variables_type_libsimgrid, current_var1->type, 0, 2, start_data_binary, 0); + res = compare_areas_with_type( (char *)heap1 + offset1, (char *)heap2 + offset2, mc_binary_info->types, mc_libsimgrid_info->types, current_var1->type, 0, 2, start_data_binary, 0); if(res == 1){ XBT_VERB("Local variable %s (%p - %p) in frame %s is different between snapshots", current_var1->name,(char *)heap1 + offset1, (char *)heap2 + offset2, current_var1->frame); xbt_dynar_free(&compared_pointers); @@ -337,15 +340,15 @@ int snapshot_compare(void *state1, void *state2){ int num1, num2; if(_sg_mc_property_file && _sg_mc_property_file[0] != '\0'){ /* Liveness MC */ - s1 = ((mc_pair_t)state1)->graph_state->system_state; - s2 = ((mc_pair_t)state2)->graph_state->system_state; - num1 = ((mc_pair_t)state1)->num; - num2 = ((mc_pair_t)state2)->num; + s1 = ((mc_visited_pair_t)state1)->graph_state->system_state; + s2 = ((mc_visited_pair_t)state2)->graph_state->system_state; + num1 = ((mc_visited_pair_t)state1)->num; + num2 = ((mc_visited_pair_t)state2)->num; /* Firstly compare automaton state */ - if(xbt_automaton_state_compare(((mc_pair_t)state1)->automaton_state, ((mc_pair_t)state2)->automaton_state) != 0) + /*if(xbt_automaton_state_compare(((mc_pair_t)state1)->automaton_state, ((mc_pair_t)state2)->automaton_state) != 0) return 1; if(xbt_automaton_propositional_symbols_compare_value(((mc_pair_t)state1)->atomic_propositions, ((mc_pair_t)state2)->atomic_propositions) != 0) - return 1; + return 1;*/ }else{ /* Safety MC */ s1 = ((mc_visited_state_t)state1)->system_state; s2 = ((mc_visited_state_t)state2)->system_state; @@ -586,7 +589,10 @@ int snapshot_compare(void *state1, void *state2){ #endif /* Compare heap */ - if(mmalloc_compare_heap((xbt_mheap_t)s1->regions[0]->data, (xbt_mheap_t)s2->regions[0]->data) > 0){ + if(mmalloc_compare_heap((xbt_mheap_t)s1->regions[0]->data, + (xbt_mheap_t)s2->regions[0]->data, + mc_libsimgrid_info->types, + mc_binary_info->types) > 0){ #ifdef MC_DEBUG xbt_os_walltimer_stop(timer);