From: Martin Quinson Date: Tue, 5 May 2020 22:22:17 +0000 (+0200) Subject: further simplify the MC initialization X-Git-Tag: v3.26~633 X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/0e200118fcdf795310764eddad476261b8698ecf further simplify the MC initialization --- diff --git a/src/mc/Session.cpp b/src/mc/Session.cpp index a925128e37..669345d583 100644 --- a/src/mc/Session.cpp +++ b/src/mc/Session.cpp @@ -25,7 +25,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_Session, mc, "Model-checker session"); namespace simgrid { namespace mc { -static void setup_child_environment(int socket) +static void run_child_process(int socket, const std::function& code) { /* On startup, simix_global_init() calls simgrid::mc::Client::initialize(), which checks whether the MC_ENV_SOCKET_FD * env variable is set. If so, MC mode is assumed, and the client is setup from its side @@ -52,6 +52,8 @@ static void setup_child_environment(int socket) int res = std::snprintf(buffer, sizeof(buffer), "%i", socket); xbt_assert((size_t)res < sizeof(buffer) && res != -1); setenv(MC_ENV_SOCKET_FD, buffer, 1); + + code(); } Session::Session(const std::function& code) @@ -74,9 +76,8 @@ Session::Session(const std::function& code) if (pid == 0) { // Child ::close(sockets[1]); - setup_child_environment(sockets[0]); - code(); - xbt_die("The model-checked process failed to exec(): %s", strerror(errno)); + run_child_process(sockets[0], code); + DIE_IMPOSSIBLE; } // Parent (model-checker): diff --git a/src/mc/checker/simgrid_mc.cpp b/src/mc/checker/simgrid_mc.cpp index d8544e5476..ff0fda6353 100644 --- a/src/mc/checker/simgrid_mc.cpp +++ b/src/mc/checker/simgrid_mc.cpp @@ -61,6 +61,7 @@ int main(int argc, char** argv) xbt_assert(argv_copy[i] != nullptr, "Unable to find a binary to exec on the command line. Did you only pass config flags?"); execvp(argv_copy[i], argv_copy + i); + xbt_die("The model-checked process failed to exec(): %s", strerror(errno)); }); delete[] argv_copy;