Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Init : dont just crash with asserts, return errors (they will crash if errhandler...
[simgrid.git] / 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();