Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2006-10-13 16:37:56


On Oct 9, 2006, at 8:41 AM, Lisandro Dalcin wrote:

> Looking at MPI-2 errata document,
> http://www.mpi-forum.org/docs/errata-20-2.html, is says:
>
> Page 61, after line 36. Add the following (paralleling the errata
> to MPI-1.1):
>
> MPI_{COMM,WIN,FILE}_GET_ERRHANDLER behave as if a new error handler
> object is created. That is, once the error handler is no longer
> needed, MPI_ERRHANDLER_FREE should be called with the error handler
> returned from MPI_ERRHANDLER_GET or MPI_{COMM,WIN,FILE}_GET_ERRHANDLER
> to mark the error handler for deallocation. This provides behavior
> similar to that of MPI_COMM_GROUP and MPI_GROUP_FREE.
>
> Well, is seems that OMPI does not currently follow this specification.
> Any plans to change this? Or it will not go in?

I'm not sure what you mean here -- OMPI currently increases the
reference count on the errhandlers returned by COM|WIN|
FILE_GET_ERRHANDLER (ERRHANDLER_GET is a synonym for
COMM_GET_ERRHANDLER). So when you call ERRHANDLER_FREE, it decreases
the refcount, and if the refcount is 0, it actually frees the error
handler (the user's handle is always set to ERRHANDLER_NULL,
regardless of whether the reference count went to 0 or not).

Remember, too, that all communications increase the refcount on the
associated communicator's errhandler. So even if you ERRHANDLER_FREE
an errhandler, if it's still associated with an ongoing
communication, the back-end object won't be freed right away.

Can you cite a specific example of what you're trying to do and how
OMPI is doing it wrong?

> Additionaly, I've noted that MPI_File_get_errhandler fails with
> MPI_ERR_FILE is passed file handle is MPI_FILE_NULL. However, I
> undersand (regarding the standard) this is the handle to query to
> get/set/reset the default error handler for new files... I think
> MPI_File_{get|set}_errhandler should accept MPI_FILE_NULL handle. Am I
> right?

By MPI-2:9.7, you are exactly correct. OMPI currently allows
MPI_FILE_SET_ERRHANDLER(MPI_FILE_NULL, ...) (there's even an explicit
reference to MPI-2:9.7 in a comment in the source), but it looks like
an oversight that we don't allow MPI_FILE_GET_ERRHANDLER
(MPI_FILE_NULL, ...). I will fix.

Thanks!

-- 
Jeff Squyres
Server Virtualization Business Unit
Cisco Systems