In the patch for errhandler_invoke.c, you can see that we need to check for MPI_ERR_PENDING to make sure that we do not free the request when we are trying to decide if we should invoke the error handler. So setting the internal req->req_status.MPI_ERROR to MPI_ERR_PENDING made it possible to check for this state in this code. Maybe you have a better way around this, but that is why I chose to implement it this way.
I agree that MPI_ERR_PENDING is only to be set in MPI_Waitall. And, in this patch, MPI_ERR_PENDING is only set in that operation. The other operations must look for the MPI_ERR_PENDING and reset the value - since we are using the internal status object to carry it around per above. You said that the implementation in ompi_request_default_wait_all was incorrect. Would you care to elaborate as to what specifically is incorrect? -- Josh On Wed, Mar 21, 2012 at 2:17 PM, George Bosilca <bosi...@eecs.utk.edu> wrote: > Josh, > > I don't agree that these changes are required. In the current standard (2.2), > MPI_ERR_PENDING is only allowed to be returned by MPI_WAITALL, in some very > specific conditions. Here is the snippet from the MPI standard clarifying > this behavior. > >> When one or more of the communications completed by a call to MPI_WAITALL >> fail, it is desireable to return specific information on each communication. >> The function MPI_WAITALL will return in such case the error code >> MPI_ERR_IN_STATUS and will set the error field of each status to a specific >> error code. This code will be MPI_SUCCESS, if the specific communication >> completed; it will be another specific error code, if it failed; or it can >> be MPI_ERR_PENDING if it has neither failed nor completed. > > As you can notice, the MPI_ERR_PENDING is only for the error in the status > array and not for the error field in the status attached to the MPI request. > Moreover, we don't use this inside Open MPI at all. > > The usage we're doing in the default_wait_all of MPI_ERR_PENDING is incorrect > as well. I will fix it, once we clarify the issue with your patch. > > Thanks, > george. > > On Mar 21, 2012, at 13:46 , jjhur...@osl.iu.edu wrote: > >> Author: jjhursey >> Date: 2012-03-21 13:46:15 EDT (Wed, 21 Mar 2012) >> New Revision: 26172 >> URL: https://svn.open-mpi.org/trac/ompi/changeset/26172 >> >> Log: >> Add support for MPI_ERR_PENDING - Per MPI 2.2 p 60 >> >> Tested with: >> ompi-tests/mpich_tester/mpich_pt2pt/truncmult.c >> >> >> Text files modified: >> trunk/ompi/errhandler/errhandler_invoke.c | 9 ++ >> trunk/ompi/request/req_test.c | 32 ++++++++++ >> trunk/ompi/request/req_wait.c | 120 >> +++++++++++++++++++++++++++++++++++++-- >> trunk/ompi/request/request.c | 2 >> trunk/ompi/request/request.h | 5 + >> 5 files changed, 158 insertions(+), 10 deletions(-) > > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel > -- Joshua Hursey Postdoctoral Research Associate Oak Ridge National Laboratory http://users.nccs.gov/~jjhursey