X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/07f196691f95ce17dcaecb68e984e93df3debb58..0cf6c791bd19e8b9acf8e220c5c62216c7fc2559:/src/kernel/EngineImpl.cpp diff --git a/src/kernel/EngineImpl.cpp b/src/kernel/EngineImpl.cpp index 1547836e44..a5b2d5718e 100644 --- a/src/kernel/EngineImpl.cpp +++ b/src/kernel/EngineImpl.cpp @@ -19,16 +19,16 @@ #include "src/simgrid/math_utils.h" #include "src/simgrid/sg_config.hpp" #include "src/smpi/include/smpi_actor.hpp" -#include "src/xbt/xbt_modinter.h" /* whether initialization was already done */ -#include "xbt/module.h" - -#include -#include #if SIMGRID_HAVE_MC #include "src/mc/remote/AppSide.hpp" #endif +#include "xbt/log.hpp" + +#include +#include + XBT_LOG_NEW_DEFAULT_CATEGORY(ker_engine, "Logging specific to Engine (kernel)"); namespace simgrid::kernel { @@ -139,6 +139,9 @@ static void install_signal_handlers() } } +static simgrid::config::Flag cfg_dbg_clean_atexit{ + "debug/clean-atexit", "Whether to cleanup SimGrid at exit. Disable it if your code segfaults after its end.", true}; + namespace simgrid::kernel { EngineImpl::~EngineImpl() @@ -172,15 +175,20 @@ void EngineImpl::initialize(int* argc, char** argv) // The communication initialization is done ASAP, as we need to get some init parameters from the MC for different // layers. But instance_ needs to be created, as we send the address of some of its fields to the MC that wants to // read them directly. - simgrid::mc::AppSide::initialize(); + simgrid::mc::AppSide::get(); // To ensure that it's initialized #endif - if (xbt_initialized == 0) { - xbt_init(argc, argv); + if (static bool inited = false; not inited) { + inited = true; + xbt_log_init(argc, argv); + + simgrid::xbt::install_exception_handler(); sg_config_init(argc, argv); } + cmdline_.assign(argv, argv + *argc); + instance_->context_mod_init(); install_signal_handlers(); @@ -188,7 +196,7 @@ void EngineImpl::initialize(int* argc, char** argv) /* register a function to be called after the environment creation */ s4u::Engine::on_platform_created_cb([this]() { this->presolve(); }); - if (config::get_value("debug/clean-atexit")) + if (cfg_dbg_clean_atexit) atexit(shutdown); } @@ -354,7 +362,7 @@ void EngineImpl::handle_ended_actions() const if (action->get_activity()->get_actor() == maestro_) action->get_activity()->get_iface()->complete(s4u::Activity::State::FAILED); - activity::ActivityImplPtr(action->get_activity())->post(); + activity::ActivityImplPtr(action->get_activity())->finish(); } } XBT_DEBUG("Handling the terminated actions (if any)"); @@ -367,7 +375,7 @@ void EngineImpl::handle_ended_actions() const if (action->get_activity()->get_actor() == maestro_) action->get_activity()->get_iface()->complete(s4u::Activity::State::FINISHED); - activity::ActivityImplPtr(action->get_activity())->post(); + activity::ActivityImplPtr(action->get_activity())->finish(); } } }