Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
add missing include for smpi_options
[simgrid.git] / src / mc / Session.cpp
index 5d00dbc..8647cc9 100644 (file)
@@ -6,6 +6,9 @@
 #include "src/mc/Session.hpp"
 #include "src/mc/checker/Checker.hpp"
 #include "src/mc/mc_config.hpp"
+#if HAVE_SMPI
+#include "smpi/smpi.h"
+#endif
 #include "src/mc/mc_private.hpp"
 #include "src/mc/mc_state.hpp"
 #include "xbt/log.h"
@@ -52,7 +55,8 @@ static void setup_child_environment(int socket)
 Session::Session(const std::function<void()>& code)
 {
 #if HAVE_SMPI
-  xbt_assert(smpi_privatize_global_variables != SmpiPrivStrategies::MMAP,
+  smpi_init_options();//only performed once
+  xbt_assert(smpi_cfg_privatization() != SmpiPrivStrategies::MMAP,
              "Please use the dlopen privatization schema when model-checking SMPI code");
 #endif
 
@@ -76,10 +80,11 @@ Session::Session(const std::function<void()>& code)
   // Parent (model-checker):
   ::close(sockets[0]);
 
+  xbt_assert(mc_model_checker == nullptr, "Did you manage to start the MC twice in this process?");
+
   std::unique_ptr<simgrid::mc::RemoteClient> process(new simgrid::mc::RemoteClient(pid, sockets[1]));
   model_checker_.reset(new simgrid::mc::ModelChecker(std::move(process)));
 
-  xbt_assert(mc_model_checker == nullptr);
   mc_model_checker = model_checker_.get();
   mc_model_checker->start();
 }