X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3080c6b0d097d6b3b7d5b3dda0592154ce438f64..a2b4d57f52081a0d45dc102c7bc987189e36c24c:/src/mc/mc_comm_determinism.c diff --git a/src/mc/mc_comm_determinism.c b/src/mc/mc_comm_determinism.c index ff049896a7..31ea363fad 100644 --- a/src/mc/mc_comm_determinism.c +++ b/src/mc/mc_comm_determinism.c @@ -84,28 +84,28 @@ static void deterministic_pattern(xbt_dynar_t pattern, int partial) nb_comms2 = xbt_dynar_length(process_comms_pattern2); if(!xbt_dynar_is_empty((xbt_dynar_t)xbt_dynar_get_as(incomplete_communications_pattern, current_process, xbt_dynar_t))) xbt_die("Damn ! Some communications from the process %u are incomplete (%lu)! That means one or several simcalls are not handle.", current_process, xbt_dynar_length((xbt_dynar_t)xbt_dynar_get_as(incomplete_communications_pattern, current_process, xbt_dynar_t))); - if (partial && (nb_comms1 != nb_comms2)) { + if (!partial && (nb_comms1 != nb_comms2)) { XBT_INFO("The total number of communications is different between the compared patterns for the process %u.\n Communication determinism verification for this process cannot be performed.", current_process); initial_global_state->send_deterministic = -1; initial_global_state->comm_deterministic = -1; } else { while (cursor < nb_comms2) { comm1 = (mc_comm_pattern_t)xbt_dynar_get_as(process_comms_pattern1, cursor, mc_comm_pattern_t); - if (comm1->type == SIMIX_COMM_SEND && comm1->src_proc == current_process) { + if (comm1->type == SIMIX_COMM_SEND) { comm2 = get_comm_pattern_from_idx(process_comms_pattern2, &send_index, comm1->type, current_process); if (compare_comm_pattern(comm1, comm2)) { - XBT_INFO("The communications pattern of the process %u is different!", current_process); + XBT_INFO("The communications pattern of the process %u is different! (Different communication : %u)", current_process, cursor); initial_global_state->send_deterministic = 0; initial_global_state->comm_deterministic = 0; return; } send_index++; - } else if (comm1->type == SIMIX_COMM_RECEIVE && comm1->dst_proc == current_process) { + } else if (comm1->type == SIMIX_COMM_RECEIVE) { comm2 = get_comm_pattern_from_idx(process_comms_pattern2, &recv_index, comm1->type, current_process); if (compare_comm_pattern(comm1, comm2)) { initial_global_state->comm_deterministic = 0; if (!_sg_mc_send_determinism){ - XBT_INFO("The communications pattern of the process %u is different!", current_process); + XBT_INFO("The communications pattern of the process %u is different! (Different communication : %u)", current_process, cursor); return; } } @@ -183,8 +183,7 @@ void get_comm_pattern(xbt_dynar_t list, smx_simcall_t request, int call) pattern->data_size = pattern->comm->comm.src_buff_size; pattern->data = xbt_malloc0(pattern->data_size); addr_pointed = *(void **) pattern->comm->comm.src_buff; - if (addr_pointed > std_heap - && addr_pointed < ((xbt_mheap_t) std_heap)->breakval) + if (addr_pointed > std_heap && addr_pointed < ((xbt_mheap_t) std_heap)->breakval) memcpy(pattern->data, addr_pointed, pattern->data_size); else memcpy(pattern->data, pattern->comm->comm.src_buff, pattern->data_size);