-
- // From PTRACE_O_TRACEEXIT:
- if (status>>8 == (SIGTRAP | (PTRACE_EVENT_EXIT<<8))) {
- if (ptrace(PTRACE_GETEVENTMSG, this->process().pid(), 0, &status) == -1)
- xbt_die("Could not get exit status");
- if (WIFSIGNALED(status)) {
- MC_report_crash(status);
- mc_model_checker->exit(SIMGRID_MC_EXIT_PROGRAM_CRASH);
- }
- }
-
- // We don't care about signals, just reinject them:
- if (WIFSTOPPED(status)) {
- XBT_DEBUG("Stopped with signal %i", (int) WSTOPSIG(status));
- if (ptrace(PTRACE_CONT, this->process().pid(), 0, WSTOPSIG(status)) == -1)
- xbt_die("Could not PTRACE_CONT");
- }
-
- else if (WIFEXITED(status) || WIFSIGNALED(status)) {
- XBT_DEBUG("Child process is over");
- this->process().terminate();
- }
+ xbt_assert(WIFEXITED(status) || WIFSIGNALED(status));
+ XBT_DEBUG("Child process is over");
+ this->process().terminate();