X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/74154653779f9c914ca6759c9e7230d4c052315f..1c9d1059a9299bcfe07778802cf1d9da64016838:/src/simix/ActorImpl.cpp diff --git a/src/simix/ActorImpl.cpp b/src/simix/ActorImpl.cpp index 2295dd34d2..1491a9e4c6 100644 --- a/src/simix/ActorImpl.cpp +++ b/src/simix/ActorImpl.cpp @@ -115,7 +115,12 @@ void SIMIX_process_cleanup(smx_actor_t process) simix_global->process_list.erase(process->pid); if (process->host && process->host_process_list_hook.is_linked()) simgrid::xbt::intrusive_erase(process->host->extension()->process_list, *process); - xbt_swag_insert(process, simix_global->process_to_destroy); + if (not xbt_swag_belongs(process, simix_global->process_to_destroy)) { +#if SIMGRID_HAVE_MC + xbt_dynar_push_as(simix_global->dead_actors_vector, smx_actor_t, process); +#endif + xbt_swag_insert(process, simix_global->process_to_destroy); + } process->context->iwannadie = 0; xbt_os_mutex_release(simix_global->mutex); @@ -135,6 +140,9 @@ void SIMIX_process_empty_trash() intrusive_ptr_release(process); process = static_cast(xbt_swag_extract(simix_global->process_to_destroy)); } +#if SIMGRID_HAVE_MC + xbt_dynar_reset(simix_global->dead_actors_vector); +#endif } namespace simgrid {