X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9dd69bb20d10074d1427193340390b7fb30bfbb4..2b431ba179258e63a1a80e611e4294265e61b27c:/src/mc/Session.cpp diff --git a/src/mc/Session.cpp b/src/mc/Session.cpp index 4d73338e5f..8c0926ef6a 100644 --- a/src/mc/Session.cpp +++ b/src/mc/Session.cpp @@ -27,18 +27,14 @@ static void setup_child_environment(int socket) // Make sure we do not outlive our parent: sigset_t mask; sigemptyset (&mask); - if (sigprocmask(SIG_SETMASK, &mask, nullptr) < 0) - throw simgrid::xbt::errno_error("Could not unblock signals"); - if (prctl(PR_SET_PDEATHSIG, SIGHUP) != 0) - throw simgrid::xbt::errno_error("Could not PR_SET_PDEATHSIG"); + xbt_assert(sigprocmask(SIG_SETMASK, &mask, nullptr) >= 0, "Could not unblock signals"); + xbt_assert(prctl(PR_SET_PDEATHSIG, SIGHUP) == 0, "Could not PR_SET_PDEATHSIG"); #endif - int res; - // Remove CLOEXEC in order to pass the socket to the exec-ed program: int fdflags = fcntl(socket, F_GETFD, 0); - if (fdflags == -1 || fcntl(socket, F_SETFD, fdflags & ~FD_CLOEXEC) == -1) - throw simgrid::xbt::errno_error("Could not remove CLOEXEC for socket"); + xbt_assert(fdflags != -1 && fcntl(socket, F_SETFD, fdflags & ~FD_CLOEXEC) != -1, + "Could not remove CLOEXEC for socket"); // Set environment: setenv(MC_ENV_VARIABLE, "1", 1); @@ -49,9 +45,8 @@ static void setup_child_environment(int socket) setenv("LC_BIND_NOW", "1", 1); char buffer[64]; - res = std::snprintf(buffer, sizeof(buffer), "%i", socket); - if ((size_t) res >= sizeof(buffer) || res == -1) - std::abort(); + 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); } @@ -61,20 +56,13 @@ static inline pid_t do_fork(F code) { pid_t pid = fork(); - if (pid < 0) - throw simgrid::xbt::errno_error("Could not fork model-checked process"); + xbt_assert(pid >= 0, "Could not fork model-checked process"); if (pid != 0) return pid; // Child-process: - try { - code(); - _exit(EXIT_SUCCESS); - } - catch(...) { - // The callback should catch exceptions: - std::terminate(); - } + code(); + _exit(EXIT_SUCCESS); } Session::Session(const std::function& code)