Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] OpenMPI error with error codes. The proposed solution.
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2013-03-26 21:33:07


On Mar 25, 2013, at 4:59 AM, Дмитрий Донцов <dvdontsov_at_[hidden]> wrote:

> I've found error in OpenMPI with error codes.

Thanks for investigating this!

> According to MPI standard (2.2 and later):
> MPI_ERR_LASTCODE must be equals to last error code and MPI_LASTUSEDCODE must be greater than or equal to MPI_ERR_LASTCODE.

Hmm. Can you cite where you see that in the spec? I see in MPI-3 p349, line 48:

    0 = MPI_SUCCESS < MPI_ERR_... <= MPI_ERR_LASTCODE

Specifically, it says that MPI_ERR_LASTCODE can be greater than the last error code (MPI_ERR_WIN, in this case).

Regardless, I'm just arguing semantics here -- our current value of LASTCODE is technically ok (for this reason), but your next argument gives a different reason why it's not ok. :-)

> In OpenMPI MPI_ERR_LASTCODE is greater than real last error code (MPI_ERR_WIN) for 1 and MPI_LASTUSEDCODE hardcoded linked with MPI_ERR_WIN. So, possible situation when MPI_LASTUSEDCODE (equals to MPI_ERR_WIN) is less than MPI_ERR_LASTCODE.

You're right -- I see the definition of MPI_LASTUSEDCODE in MPI-3 p353 27-32, and it says that LASTUSEDCODE must be >= MPI_ERR_LASTCODE.

So we have two choices:

1. set MPI_ERR_LASTCODE = MPI_LASTUSEDCODE = MPI_ERR_WIN
2. leave MPI_ERR_LASTCODE = MPI_ERR_WIN + 1, and set MPI_LASTUSEDCODE to MPI_ERR_LASTCODE

I'm ok with your solution (#1) -- it doesn't leave a "hole" in the error code space when users create their own.

I applied a slightly modified version of your patch in https://svn.open-mpi.org/trac/ompi/changeset/28225. I don't know / doubt if this will make 1.7.0, but we can get it in 1.7.1.

Thank you!

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/