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);
}
}
else
flag = simcall_comm_test((*request)->action);
if(flag) {
- (*request)->refcount++;
finish_wait(request, status);
+ request=MPI_REQUEST_NULL;
}else{
smpi_empty_status(status);
}
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;
if(status != MPI_STATUSES_IGNORE) {
status[index] = *pstat;
}
+ requests[index]=MPI_REQUEST_NULL;
}else{
return MPI_UNDEFINED;
}
if(status != MPI_STATUSES_IGNORE) {
status[i] = *pstat;
}
+ requests[i]=MPI_REQUEST_NULL;
+
}
}else{
count_dead++;