X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/43307e6167f4be7aa7016e16df4e55f6f1973188..d1476ed63c5c33d5a1395b70ac17374e07f7b80d:/src/msg/m_process.c?ds=sidebyside diff --git a/src/msg/m_process.c b/src/msg/m_process.c index 739a784448..48d8d413bc 100644 --- a/src/msg/m_process.c +++ b/src/msg/m_process.c @@ -154,6 +154,7 @@ m_process_t MSG_process_create_with_environment(const char *name, /* Simulator Data */ simdata->PID = msg_global->PID++; simdata->waiting_action = NULL; + simdata->waiting_task = NULL; simdata->m_host = host; simdata->argc = argc; simdata->argv = argv; @@ -195,15 +196,16 @@ void MSG_process_kill(m_process_t process) DEBUG3("Killing %s(%d) on %s", process->name, p_simdata->PID, p_simdata->m_host->name); - if (p_simdata->waiting_task) { - DEBUG1("Canceling waiting task %s", p_simdata->waiting_task->name); - if (p_simdata->waiting_task->simdata->compute) { - SIMIX_action_cancel(p_simdata->waiting_task->simdata->compute); - } else if (p_simdata->waiting_task->simdata->comm) { + if (p_simdata->waiting_task && p_simdata->waiting_task->simdata->comm) { SIMIX_communication_cancel(p_simdata->waiting_task->simdata->comm); - } } - + + if (p_simdata->waiting_action) { + DEBUG1("Canceling waiting task %s", + SIMIX_action_get_name(p_simdata->waiting_action)); + SIMIX_action_cancel(p_simdata->waiting_action); + } + xbt_fifo_remove(msg_global->process_list, process); SIMIX_process_kill(process->simdata->s_process);