Function such as MPI_Op_free only decrement a reference counter, they do not actually free the internal MPI objects. These MPI objects may still be in use. Freeing resources or un-root objects in such a call can lead to accessing uninitialized memory.
In my experience, this means that the some of the MPI_*_free calls may not actually be able to free anything (e.g. MPI_Op_free). Many objects may need to remain allocated indefinitely (or until MPI_Finalize).
Function such as
MPI_Op_freeonly decrement a reference counter, they do not actually free the internal MPI objects. These MPI objects may still be in use. Freeing resources or un-root objects in such a call can lead to accessing uninitialized memory.In my experience, this means that the some of the
MPI_*_freecalls may not actually be able to free anything (e.g.MPI_Op_free). Many objects may need to remain allocated indefinitely (or untilMPI_Finalize).