SIMIX_process_on_exit_runall(process);
/* Unregister from the kill timer if any */
- if (process->kill_timer != nullptr)
+ if (process->kill_timer != nullptr) {
SIMIX_timer_remove(process->kill_timer);
+ process->kill_timer = nullptr;
+ }
xbt_os_mutex_acquire(simix_global->mutex);
xbt_die("Unknown type of activity");
}
- /*
- switch (process->waiting_synchro->type) {
- case SIMIX_SYNC_JOIN:
- SIMIX_process_sleep_destroy(process->waiting_synchro);
- break;
- } */
-
process->waiting_synchro = nullptr;
}
if (std::find(begin(simix_global->process_to_run), end(simix_global->process_to_run), process) ==
smx_process_exit_status_t exit_status = (process->context->iwannadie) ? SMX_EXIT_FAILURE : SMX_EXIT_SUCCESS;
while (not process->on_exit.empty()) {
s_smx_process_exit_fun_t exit_fun = process->on_exit.back();
- (exit_fun.fun)((void*)exit_status, exit_fun.arg);
process->on_exit.pop_back();
+ (exit_fun.fun)((void*)exit_status, exit_fun.arg);
}
}