case MC_MESSAGE_ASSERTION_FAILED:
MC_report_assertion_error();
- ::exit(SIMGRID_EXIT_SAFETY);
+ ::exit(SIMGRID_MC_EXIT_SAFETY);
break;
default:
xbt_die("Could not get exit status");
if (WIFSIGNALED(status)) {
MC_report_crash(status);
- ::exit(SIMGRID_PROGRAM_CRASH);
+ ::exit(SIMGRID_MC_EXIT_PROGRAM_CRASH);
}
}
xbt_free(initial_global_state->send_diff);
initial_global_state->send_diff = NULL;
MC_print_statistics(mc_stats);
- exit(SIMGRID_EXIT_NON_DETERMINISM);
+ exit(SIMGRID_MC_EXIT_NON_DETERMINISM);
}else if(_sg_mc_comms_determinism && (!initial_global_state->send_deterministic && !initial_global_state->recv_deterministic)) {
XBT_INFO("****************************************************");
XBT_INFO("***** Non-deterministic communications pattern *****");
xbt_free(initial_global_state->recv_diff);
initial_global_state->recv_diff = NULL;
MC_print_statistics(mc_stats);
- exit(SIMGRID_EXIT_NON_DETERMINISM);
+ exit(SIMGRID_MC_EXIT_NON_DETERMINISM);
}
}
}
#ifndef SIMGRID_MC_EXIT_HPP
#define SIMGRID_MC_EXIT_HPP
-#define SIMGRID_EXIT_SUCCESS 0
-#define SIMGRID_EXIT_SAFETY 1
-#define SIMGRID_EXIT_LIVENESS 2
-#define SIMGRID_EXIT_DEADLOCK 3
-#define SIMGRID_EXIT_NON_TERMINATION 4
-#define SIMGRID_EXIT_NON_DETERMINISM 5
-#define SIMGRID_PROGRAM_CRASH 6
+#define SIMGRID_MC_EXIT_SUCCESS 0
+#define SIMGRID_MC_EXIT_SAFETY 1
+#define SIMGRID_MC_EXIT_LIVENESS 2
+#define SIMGRID_MC_EXIT_DEADLOCK 3
+#define SIMGRID_MC_EXIT_NON_TERMINATION 4
+#define SIMGRID_MC_EXIT_NON_DETERMINISM 5
+#define SIMGRID_MC_EXIT_PROGRAM_CRASH 6
-#define SIMGRID_ERROR 63
+#define SIMGRID_MC_EXIT_ERROR 63
#endif
MC_dump_stack_liveness(mc_stack);
MC_print_statistics(mc_stats);
XBT_INFO("Counter-example depth : %d", counter_example_depth);
- exit(SIMGRID_EXIT_LIVENESS);
+ exit(SIMGRID_MC_EXIT_LIVENESS);
}
}
if(_sg_mc_termination && is_exploration_stack_state(next_state)){
MC_show_non_termination();
- exit(SIMGRID_EXIT_NON_TERMINATION);
+ exit(SIMGRID_MC_EXIT_NON_TERMINATION);
}
if ((visited_state = is_visited_state(next_state)) == NULL) {
/* Check for deadlocks */
if (MC_deadlock_check()) {
MC_show_deadlock(NULL);
- exit(SIMGRID_EXIT_DEADLOCK);
+ exit(SIMGRID_MC_EXIT_DEADLOCK);
}
/* Traverse the stack backwards until a state with a non empty interleave
XBT_INFO("No property violation found.");
MC_print_statistics(mc_stats);
- exit(SIMGRID_EXIT_SUCCESS);
+ exit(SIMGRID_MC_EXIT_SUCCESS);
}
static void MC_modelcheck_safety_init(void)
// Make sure we do not outlive our parent:
if (prctl(PR_SET_PDEATHSIG, SIGHUP) != 0) {
std::perror("simgrid-mc");
- return SIMGRID_ERROR;
+ return SIMGRID_MC_EXIT_ERROR;
}
#endif
int fdflags = fcntl(socket, F_GETFD, 0);
if (fdflags == -1) {
std::perror("simgrid-mc");
- return SIMGRID_ERROR;
+ return SIMGRID_MC_EXIT_ERROR;
}
if (fcntl(socket, F_SETFD, fdflags & ~FD_CLOEXEC) == -1) {
std::perror("simgrid-mc");
- return SIMGRID_ERROR;
+ return SIMGRID_MC_EXIT_ERROR;
}
XBT_DEBUG("CLOEXEC removed on socket %i", socket);
char buffer[64];
res = std::snprintf(buffer, sizeof(buffer), "%i", socket);
if ((size_t) res >= sizeof(buffer) || res == -1)
- return SIMGRID_ERROR;
+ return SIMGRID_MC_EXIT_ERROR;
setenv(MC_ENV_SOCKET_FD, buffer, 1);
execvp(argv[1], argv+1);
XBT_ERROR("Could not execute the child process");
- return SIMGRID_ERROR;
+ return SIMGRID_MC_EXIT_ERROR;
}
static int do_parent(int socket, pid_t child)
catch(std::exception& e) {
XBT_ERROR("Exception: %s", e.what());
}
- exit(SIMGRID_ERROR);
+ exit(SIMGRID_MC_EXIT_ERROR);
}
static char** argvdup(int argc, char** argv)
res = socketpair(AF_LOCAL, SOCK_DGRAM | SOCK_CLOEXEC, 0, sockets);
if (res == -1) {
perror("simgrid-mc");
- return SIMGRID_ERROR;
+ return SIMGRID_MC_EXIT_ERROR;
}
XBT_DEBUG("Created socketpair");
pid_t pid = fork();
if (pid < 0) {
perror("simgrid-mc");
- return SIMGRID_ERROR;
+ return SIMGRID_MC_EXIT_ERROR;
} else if (pid == 0) {
close(sockets[1]);
int res = do_child(sockets[0], argv);