X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/d53a2108a1ea38b2f952abb48c39730ccc91c2a8..be4186e3689b74b38253d5425cbd6d08b2854a2b:/src/simix/ActorImpl.cpp diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 5d347f1199..a1982608a4 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -404,6 +404,7 @@ smx_actor_t SIMIX_process_attach(const char* name, void* data, const char* hostn simix_global->process_list[process->pid] = process; XBT_DEBUG("Inserting %s(%s) in the to_run list", process->getCname(), host->getCname()); simix_global->process_to_run.push_back(process); + intrusive_ptr_add_ref(process); /* Tracing the process creation */ TRACE_msg_process_create(process->getName(), process->pid, process->host); @@ -425,7 +426,6 @@ void SIMIX_process_detach() auto process = context->process(); simix_global->cleanup_process_function(process); context->attach_stop(); - delete process; } /** @@ -462,7 +462,6 @@ void SIMIX_process_kill(smx_actor_t process, smx_actor_t issuer) { return; } - simgrid::s4u::Actor::onDestruction(process->iface()); XBT_DEBUG("Killing process %s@%s", process->getCname(), process->host->getCname()); process->context->iwannadie = 1; @@ -784,6 +783,7 @@ smx_actor_t SIMIX_process_from_PID(aid_t PID) } void SIMIX_process_on_exit_runall(smx_actor_t process) { + simgrid::s4u::Actor::onDestruction(process->iface()); 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();