diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp index 75f561b754c8ac7bf1ce98cb450f93ea148617a0..c35c1e84b922db7f5b8a933590d0dad1bfbaf238 100644 --- a/Common/GmshMessage.cpp +++ b/Common/GmshMessage.cpp @@ -185,7 +185,10 @@ void Msg::Exit(int level) #if defined(HAVE_MPI) // force general abort (wven if the fatal error occurred on 1 cpu only) MPI_Abort(MPI_COMM_WORLD, level); - MPI_Finalize(); + int finalized; + MPI_Finalized(&finalized); + if (!finalized) + MPI_Finalize(); #endif FinalizeOnelab(); exit(level); @@ -215,7 +218,10 @@ void Msg::Exit(int level) PetscFinalize(); #endif #if defined(HAVE_MPI) - MPI_Finalize(); + int finalized; //Some PETSc versions call MPI_FINALIZE + MPI_Finalized(&finalized); + if (!finalized) + MPI_Finalize(); #endif FinalizeOnelab(); exit(_atLeastOneErrorInRun);