- switch(s1->regions[i]->type){
- case 0:
- if(s1->regions[i]->size != s2->regions[i]->size){
- //XBT_DEBUG("Different size of heap (s1 = %Zu, s2 = %Zu)", s1->regions[i]->size, s2->regions[i]->size);
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- //XBT_DEBUG("Different start addr of heap (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- return 1;
- }
- if(mmalloc_compare_heap(s1->regions[i]->data, s2->regions[i]->data)){
- //XBT_DEBUG("Different heap (mmalloc_compare)");
- return 1;
- }
- break;
- case 1 :
- if(s1->regions[i]->size != s2->regions[i]->size){
- //XBT_DEBUG("Different size of libsimgrid (s1 = %Zu, s2 = %Zu)", s1->regions[i]->size, s2->regions[i]->size);
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- //XBT_DEBUG("Different start addr of libsimgrid (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- return 1;
- }
- if(memcmp(s1->regions[i]->data, s2->regions[i]->data, s1->regions[i]->size) != 0){
- //XBT_DEBUG("Different memcmp for data in libsimgrid");
- return 1;
- }
- break;
- case 2:
- if(s1->regions[i]->size != s2->regions[i]->size){
- //XBT_DEBUG("Different size of program (s1 = %Zu, s2 = %Zu)", s1->regions[i]->size, s2->regions[i]->size);
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- //XBT_DEBUG("Different start addr of program (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- return 1;
- }
- if(memcmp(s1->regions[i]->data, s2->regions[i]->data, s1->regions[i]->size) != 0){
- //XBT_DEBUG("Different memcmp for data in program");
- return 1;
- }
- break;
- case 3:
- if(s1->regions[i]->size != s2->regions[i]->size){
- //XBT_DEBUG("Different size of stack (s1 = %Zu, s2 = %Zu)", s1->regions[i]->size, s2->regions[i]->size);
- return 1;
- }
- if(s1->regions[i]->start_addr != s2->regions[i]->start_addr){
- //XBT_DEBUG("Different start addr of stack (s1 = %p, s2 = %p)", s1->regions[i]->start_addr, s2->regions[i]->start_addr);
- return 1;
- }
- if(memcmp(s1->regions[i]->data, s2->regions[i]->data, s1->regions[i]->size) != 0){
- //XBT_DEBUG("Different memcmp for data in stack");
- return 1;
+ cursor = 0;
+ mc_pair_reached_t pair_test = NULL;
+
+ xbt_dynar_foreach(reached_pairs, cursor, pair_test){
+ XBT_INFO("Pair reached #%d", pair_test->nb);
+ if(automaton_state_compare(pair_test->automaton_state, st) == 0){
+ if(propositional_symbols_compare_value(pair_test->prop_ato, new_pair->prop_ato) == 0){
+ if(snapshot_compare(pair_test->system_state, new_pair->system_state) == 0){
+
+ if(raw_mem_set)
+ MC_SET_RAW_MEM;
+ else
+ MC_UNSET_RAW_MEM;
+
+ return 1;
+ }
+ }else{
+ XBT_INFO("Different values of propositional symbols");
+ }
+ }else{
+ XBT_INFO("Different automaton state");