X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8870e4a485d50ed72f249b345c8338dd6ef1b7f7..836c888a9f8c7be6a2ec571a2f838c76a7df1a40:/src/mc/mc_liveness.c?ds=sidebyside diff --git a/src/mc/mc_liveness.c b/src/mc/mc_liveness.c index c7b280f70e..221b87992c 100644 --- a/src/mc/mc_liveness.c +++ b/src/mc/mc_liveness.c @@ -33,6 +33,46 @@ unsigned int hash_region(char *str, int str_len){ } +int data_program_region_compare(void *d1, void *d2, size_t size){ + int distance = 0; + int pointer_align; + int i; + + for(i=0; iregions[i]->size != s2->regions[i]->size){ if(XBT_LOG_ISENABLED(mc_liveness, xbt_log_priority_debug)){ XBT_DEBUG("Different size of libsimgrid (s1 = %zu, s2 = %zu)", s1->regions[i]->size, s2->regions[i]->size); @@ -99,16 +139,41 @@ int snapshot_compare(mc_snapshot_t s1, mc_snapshot_t s2){ return 1; } } - if(memcmp(s1->regions[i]->data, s2->regions[i]->data, s1->regions[i]->size) != 0){ + if(data_program_region_compare(s1->regions[i]->data, s2->regions[i]->data, s1->regions[i]->size) != 0){ + if(XBT_LOG_ISENABLED(mc_liveness, xbt_log_priority_debug)){ + XBT_DEBUG("Different memcmp for data in libsimgrid"); + errors++; + }else{ + return 1; + } + } + break; + case 2 : + if(s1->regions[i]->size != s2->regions[i]->size){ + if(XBT_LOG_ISENABLED(mc_liveness, xbt_log_priority_debug)){ + XBT_DEBUG("Different size of data program (s1 = %zu, s2 = %zu)", s1->regions[i]->size, s2->regions[i]->size); + errors++; + }else{ + return 1; + } + } + if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){ + if(XBT_LOG_ISENABLED(mc_liveness, xbt_log_priority_debug)){ + XBT_DEBUG("Different start addr of data program (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr); + errors++; + }else{ + return 1; + } + } + if(data_libsimgrid_region_compare(s1->regions[i]->data, s2->regions[i]->data, s1->regions[i]->size) != 0){ if(XBT_LOG_ISENABLED(mc_liveness, xbt_log_priority_debug)){ XBT_DEBUG("Different memcmp for data in libsimgrid"); - XBT_DEBUG("Size : %zu", s1->regions[i]->size); errors++; }else{ return 1; } } - break;*/ + break; default: break; } @@ -116,7 +181,6 @@ int snapshot_compare(mc_snapshot_t s1, mc_snapshot_t s2){ return (errors > 0); - } int reached(xbt_state_t st){ @@ -645,16 +709,16 @@ int visited_hash(xbt_state_t st, int sc){ MC_UNSET_RAW_MEM; return 1; }else{ - XBT_DEBUG("Different snapshot"); + //XBT_DEBUG("Different snapshot"); } }else{ - XBT_DEBUG("Different values of propositional symbols"); + //XBT_DEBUG("Different values of propositional symbols"); } }else{ - XBT_DEBUG("Different automaton state"); + //XBT_DEBUG("Different automaton state"); } }else{ - XBT_DEBUG("Different value of search_cycle"); + //XBT_DEBUG("Different value of search_cycle"); } region_diff = 0; @@ -812,9 +876,13 @@ void MC_ddfs_init(void){ XBT_DEBUG("Double-DFS init"); XBT_DEBUG("**************************************************"); + XBT_DEBUG("Std heap : %p", std_heap); + XBT_DEBUG("Raw heap : %p", raw_heap); + mc_pair_stateless_t mc_initial_pair = NULL; mc_state_t initial_graph_state = NULL; smx_process_t process; + MC_wait_for_requests(); @@ -903,7 +971,7 @@ void MC_ddfs(int search_cycle){ mc_stats_pair->visited_pairs++; - sleep(1); + //sleep(1); int value; mc_state_t next_graph_state = NULL;