X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ec6ad1cda462aea8684decc3672c753715c1bf70..419d880cf5ea0cc1f4c2b299923a6002811e55e3:/src/msg/m_process.c diff --git a/src/msg/m_process.c b/src/msg/m_process.c index 739a784448..c2cab1b011 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); @@ -248,7 +250,6 @@ void *MSG_process_get_data(m_process_t process) MSG_error_t MSG_process_set_data(m_process_t process, void *data) { xbt_assert0((process != NULL), "Invalid parameters"); - xbt_assert0((process->data == NULL), "Data already set"); process->data = data;