From 10ac887f7a620bd1b7b2ba445bc9ad53f9978a4c Mon Sep 17 00:00:00 2001
From: Sebastien Blaise <sebastien.blaise@uclouvain.be>
Date: Thu, 30 Jul 2015 12:33:54 +0000
Subject: [PATCH] Fixed bug with MPI_FINALIZE when it was called by PETSc
 earlier

---
 Common/GmshMessage.cpp | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/Common/GmshMessage.cpp b/Common/GmshMessage.cpp
index 75f561b754..c35c1e84b9 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);
-- 
GitLab