Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Init : dont just crash with asserts, return errors (they will crash if errhandler...
authorAugustin Degomme <adegomme@gmail.com>
Sat, 3 Apr 2021 12:51:22 +0000 (14:51 +0200)
committerAugustin Degomme <adegomme@gmail.com>
Sat, 3 Apr 2021 13:50:12 +0000 (15:50 +0200)
src/smpi/bindings/smpi_pmpi.cpp

index 1e59cd8..25ce5f9 100644 (file)
@@ -37,8 +37,18 @@ int PMPI_Init(int*, char***)
   xbt_assert(simgrid::s4u::Engine::is_initialized(),
              "Your MPI program was not properly initialized. The easiest is to use smpirun to start it.");
 
-  xbt_assert(not smpi_process()->initializing());
-  xbt_assert(not smpi_process()->initialized());
+  if(smpi_process()->initializing()){
+    XBT_WARN("SMPI is already initializing - MPI_Init called twice ?");
+    return MPI_ERR_OTHER;
+  }
+  if(smpi_process()->initialized()){
+    XBT_WARN("SMPI already initialized once - MPI_Init called twice ?");
+    return MPI_ERR_OTHER;
+  }
+  if(smpi_process()->finalized()){
+    XBT_WARN("SMPI already finalized");
+    return MPI_ERR_OTHER;
+  }
 
   simgrid::smpi::ActorExt::init();
   int rank_traced = simgrid::s4u::this_actor::get_pid();