X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/e487ef4538248f261ddb6e814357593df7646e33..419d880cf5ea0cc1f4c2b299923a6002811e55e3:/src/msg/m_process.c diff --git a/src/msg/m_process.c b/src/msg/m_process.c index 68779a4e2f..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,12 +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 && 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); @@ -245,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;