Skip to content
Snippets Groups Projects
Commit 199c857d authored by Mark OLESEN's avatar Mark OLESEN
Browse files

ENH: check if MPI buffer really was attached before deattaching

- can occur if MPI has be initialized for communication but OpenFOAM
  itself is operating in serial mode and thus did not attach any
  MPI buffers.
parent f0fc2a26
Branches
Tags
No related merge requests found
......@@ -187,6 +187,9 @@ bool Foam::UPstream::init(int& argc, char**& argv, const bool needsThread)
Pout<< "UPstream::init : mpi-buffer-size " << bufSize << endl;
}
// TBD: could add error handling here.
// Delete allocated and leave if we fail to attach the buffer?
MPI_Buffer_attach(new char[bufSize], bufSize);
}
#endif
......@@ -225,10 +228,19 @@ void Foam::UPstream::exit(int errnum)
#ifndef SGIMPI
{
int size;
char* buff;
MPI_Buffer_detach(&buff, &size);
delete[] buff;
// Some MPI notes suggest that the return code is MPI_SUCCESS when
// no buffer is attached.
// Be extra careful and require a non-zero size as well.
int bufSize = 0;
char* buf = nullptr;
flag = MPI_Buffer_detach(&buf, &bufSize);
if (MPI_SUCCESS == flag && bufSize)
{
delete[] buf;
}
}
#endif
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment