X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a62b64d7cff5f86059bf7ec5df2d4f60a61a827b..5d67901dba3dfd8e75f708c329b8144287490077:/src/smpi/smpi_base.cpp diff --git a/src/smpi/smpi_base.cpp b/src/smpi/smpi_base.cpp index aecb3cbbcf..613e09817e 100644 --- a/src/smpi/smpi_base.cpp +++ b/src/smpi/smpi_base.cpp @@ -17,6 +17,8 @@ #include "simgrid/sg_config.h" #include "colls/colls.h" +#include "src/simix/SynchroComm.hpp" + XBT_LOG_NEW_DEFAULT_SUBCATEGORY(smpi_base, smpi, "Logging specific to SMPI (base)"); static int match_recv(void* a, void* b, smx_synchro_t ignored) { @@ -884,9 +886,11 @@ 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); - 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 + if((MC_is_active() || MC_record_replay_is_active()) && (*request)->action) { + simgrid::simix::Comm *comm = dynamic_cast( (*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 + } } finish_wait(request, status);