X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3ce54eebdd6d6d34cb5bebd093c08210e013705d..12c9c99ef8dd3707619940a88776a13d143942ba:/src/smpi/smpi_win.cpp diff --git a/src/smpi/smpi_win.cpp b/src/smpi/smpi_win.cpp index 184b89e5ed..e2d6b5f3a8 100644 --- a/src/smpi/smpi_win.cpp +++ b/src/smpi/smpi_win.cpp @@ -572,9 +572,10 @@ int Win::lock(int lock_type, int rank, int assert){ target_win->lockers_.push_back(comm_->rank()); - int finished = finish_comms(); + int finished = finish_comms(rank); XBT_DEBUG("Win_lock %d - Finished %d RMA calls", rank, finished); - + finished = target_win->finish_comms(rank_); + XBT_DEBUG("Win_lock target %d - Finished %d RMA calls", rank, finished); return MPI_SUCCESS; } @@ -598,9 +599,10 @@ int Win::unlock(int rank){ xbt_mutex_release(target_win->lock_mut_); } - int finished = finish_comms(); + int finished = finish_comms(rank); XBT_DEBUG("Win_unlock %d - Finished %d RMA calls", rank, finished); - + finished = target_win->finish_comms(rank_); + XBT_DEBUG("Win_unlock target %d - Finished %d RMA calls", rank, finished); return MPI_SUCCESS; } @@ -677,7 +679,7 @@ int Win::finish_comms(int rank){ std::vector* myreqqs = new std::vector(); std::vector::iterator iter = reqqs->begin(); while (iter != reqqs->end()){ - if(((*iter)->src() == rank) || ((*iter)->dst() == rank)){ + if(((*iter)!=MPI_REQUEST_NULL) && (((*iter)->src() == rank) || ((*iter)->dst() == rank))){ myreqqs->push_back(*iter); iter = reqqs->erase(iter); size++;