X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/726976b66d823569fe7f193e2cc93251435c0d16..a468c44a3ff64c8252a45ba0c4d8fea2c147491b:/src/smpi/smpi_base.c diff --git a/src/smpi/smpi_base.c b/src/smpi/smpi_base.c index 837f1e3811..d7d32fcdd3 100644 --- a/src/smpi/smpi_base.c +++ b/src/smpi/smpi_base.c @@ -574,7 +574,7 @@ static void finish_wait(MPI_Request * request, MPI_Status * status) if (TRACE_smpi_view_internals()) { if(req->flags & RECV){ int rank = smpi_process_index(); - int src_traced = smpi_group_index(smpi_comm_group(req->comm), req->src); + int src_traced = smpi_group_index(smpi_comm_group(req->comm), req->src == MPI_ANY_SOURCE ? req->real_src : req->src); TRACE_smpi_recv(rank, src_traced, rank); } } @@ -600,8 +600,8 @@ int smpi_mpi_test(MPI_Request * request, MPI_Status * status) { else flag = simcall_comm_test((*request)->action); if(flag) { - (*request)->refcount++; finish_wait(request, status); + request=MPI_REQUEST_NULL; }else{ smpi_empty_status(status); } @@ -807,6 +807,7 @@ int smpi_mpi_waitall(int count, MPI_Request requests[], index = smpi_mpi_waitany(count, requests, pstat); if (index == MPI_UNDEFINED) break; + requests[index]=MPI_REQUEST_NULL; } if (status != MPI_STATUSES_IGNORE) { status[index] = *pstat; @@ -835,6 +836,7 @@ int smpi_mpi_waitsome(int incount, MPI_Request requests[], int *indices, if(status != MPI_STATUSES_IGNORE) { status[index] = *pstat; } + requests[index]=MPI_REQUEST_NULL; }else{ return MPI_UNDEFINED; } @@ -859,6 +861,8 @@ int smpi_mpi_testsome(int incount, MPI_Request requests[], int *indices, if(status != MPI_STATUSES_IGNORE) { status[i] = *pstat; } + requests[i]=MPI_REQUEST_NULL; + } }else{ count_dead++;