X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/49514a74128a35ed4c0ba6dc190d70d35dd9fd7a..f9b0b47d63fb3eed01420b0eabb455cb300f6cd7:/src/smpi/smpi_base.c diff --git a/src/smpi/smpi_base.c b/src/smpi/smpi_base.c index 8b60d8274d..e76bdc1c3b 100644 --- a/src/smpi/smpi_base.c +++ b/src/smpi/smpi_base.c @@ -348,6 +348,7 @@ void smpi_mpi_start(MPI_Request request) if (request->flags & RMA || request->size < sg_cfg_get_int("smpi/async_small_thres")){ //We have to check both mailboxes (because SSEND messages are sent to the large mbox). begin with the more appropriate one : the small one. mailbox = smpi_process_mailbox_small(); + XBT_DEBUG("Is there a corresponding send already posted in the small mailbox %p (in case of SSEND)?", mailbox); XBT_DEBUG("Is there a corresponding send already posted the small mailbox %p (in case of SSEND)?", mailbox); smx_synchro_t action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request); @@ -356,6 +357,7 @@ void smpi_mpi_start(MPI_Request request) XBT_DEBUG("No, nothing in the small mailbox test the other one : %p", mailbox); action = simcall_comm_iprobe(mailbox, 0, request->src,request->tag, &match_recv, (void*)request); if(action ==NULL){ + XBT_DEBUG("Still nothing, switch back to the small mailbox : %p", mailbox); XBT_DEBUG("Still notching, switch back to the small mailbox : %p", mailbox); mailbox = smpi_process_mailbox_small(); } @@ -905,10 +907,9 @@ void smpi_mpi_wait(MPI_Request * request, MPI_Status * status) if ((*request)->action != NULL) { // this is not a detached send simcall_comm_wait((*request)->action, -1.0); -#ifdef HAVE_MC - if(MC_is_active() && (*request)->action) + + if((MC_is_active() || MC_record_replay_is_active()) && (*request)->action) (*request)->action->comm.dst_data = NULL; // dangling pointer : dst_data is freed with a wait, need to set it to NULL for system state comparison -#endif } finish_wait(request, status); @@ -993,7 +994,7 @@ int smpi_mpi_waitall(int count, MPI_Request requests[], } for(c = 0; c < count; c++) { - if (MC_is_active()) { + if (MC_is_active() || MC_record_replay_is_active()) { smpi_mpi_wait(&requests[c], pstat); index = c; } else { @@ -1587,4 +1588,3 @@ void smpi_mpi_exscan(void *sendbuf, void *recvbuf, int count, xbt_free(tmpbufs); xbt_free(requests); } -