X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/633e10e9d14bde1225977c96e1da28d942a21074..a497c1d62e1064de5a4d765dc43cb9e71243ba95:/src/mc/simgrid_mc.cpp diff --git a/src/mc/simgrid_mc.cpp b/src/mc/simgrid_mc.cpp index 3d3017d246..ac45108e7d 100644 --- a/src/mc/simgrid_mc.cpp +++ b/src/mc/simgrid_mc.cpp @@ -24,7 +24,7 @@ #include "src/mc/mc_protocol.h" #include "src/mc/mc_safety.h" #include "src/mc/mc_comm_pattern.h" -#include "src/mc/mc_liveness.h" +#include "src/mc/LivenessChecker.hpp" #include "src/mc/mc_exit.h" #include "src/mc/Session.hpp" #include "src/mc/Checker.hpp" @@ -32,7 +32,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_main, mc, "Entry point for simgrid-mc"); -static +static inline char** argvdup(int argc, char** argv) { char** argv_copy = xbt_new(char*, argc+1); @@ -55,8 +55,8 @@ std::unique_ptr createChecker(simgrid::mc::Session& sessio return std::unique_ptr( new simgrid::mc::SafetyChecker(session)); else - code = [](Session& session) { - return simgrid::mc::modelcheck_liveness(); }; + return std::unique_ptr( + new simgrid::mc::LivenessChecker(session)); return std::unique_ptr( new FunctionalChecker(session, std::move(code))); @@ -75,15 +75,17 @@ int main(int argc, char** argv) mc_mode = MC_MODE_SERVER; // The initialisation function can touch argv. - // We need to keep the original parameters in order to pass them to the - // model-checked process so we make a copy of them: - int argc_copy = argc; + // We make a copy of argv before modifying it in order to pass the original + // value to the model-checked: char** argv_copy = argvdup(argc, argv); - xbt_log_init(&argc_copy, argv_copy); - sg_config_init(&argc_copy, argv_copy); + xbt_log_init(&argc, argv); + sg_config_init(&argc, argv); std::unique_ptr session = - std::unique_ptr(Session::spawnvp(argv[1], argv+1)); + std::unique_ptr(Session::spawnvp(argv_copy[1], argv_copy+1)); + free(argv_copy); + + simgrid::mc::session = session.get(); std::unique_ptr checker = createChecker(*session); int res = checker->run(); session->close();