I'm testing openmpi-1.8.
MPI_Get_error_string() for the following error classes is failing. I
guess you just forgot to update the list of error strings.
MPI_ERR_RMA_RANGE
MPI_ERR_RMA_ATTACH
MPI_ERR_RMA_FLAVOR
MPI_ERR_RMA_SHARED
I'm attaching a simple test code for you to verify the issue.
Additionally, please update the following comment in mpi.h
/* Per MPI-3 p349 47, MPI_ERR_LASTCODE must be >= the last predefined
MPI_ERR_<foo> code. So just set it equal to the last code --
MPI_ERR_RMA_FLAVOR, in this case. */
#define MPI_ERR_LASTCODE MPI_ERR_RMA_SHARED
The comment is wrong, the last predefined error class is
MPI_ERR_RMA_SHARED and not MPI_ERR_RMA_FLAVOR.
--
Lisandro Dalcin
---------------
CIMEC (UNL/CONICET)
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
3000 Santa Fe, Argentina
Tel: +54-342-4511594 (ext 1016)
Tel/Fax: +54-342-4511169
#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[]) {
int ierr;
int errclasses[] = {
MPI_SUCCESS,
MPI_ERR_RMA_RANGE,
MPI_ERR_RMA_ATTACH,
MPI_ERR_RMA_FLAVOR,
MPI_ERR_RMA_SHARED
};
int resultlen = 0;
char errstring[MPI_MAX_ERROR_STRING];
int i, n = sizeof(errclasses)/sizeof(int);
MPI_Init(0,0);
MPI_Comm_set_errhandler(MPI_COMM_WORLD,MPI_ERRORS_RETURN);
for (i=0; i<n; i++) {
printf("Test for error class: %d\n", errclasses[i]);
ierr = MPI_Error_string(errclasses[i], errstring, &resultlen);
if (ierr == MPI_SUCCESS) {
printf("error string: %s\n", errstring);
} else {
printf("MPI_Error_string() failed with code %d!!!\n",ierr);
}
}
MPI_Finalize();
}