X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9b27268d9d9bb2c80b6d5107343665d1df982c6e..92c95f0f54ec040441465d74d3a56008fa5d0e99:/src/msg/m_process.c diff --git a/src/msg/m_process.c b/src/msg/m_process.c index 813bef2388..f43f114201 100644 --- a/src/msg/m_process.c +++ b/src/msg/m_process.c @@ -136,6 +136,8 @@ void MSG_process_kill(m_process_t process) int i; simdata_process_t p_simdata = process->simdata; simdata_host_t h_simdata= p_simdata->host->simdata; + int _cursor; + m_process_t proc = NULL; /* fprintf(stderr,"Killing %s(%d) on %s.\n",process->name, */ /* p_simdata->PID,p_simdata->host->name); */ @@ -148,13 +150,19 @@ void MSG_process_kill(m_process_t process) } if (i==msg_global->max_channel) { if(p_simdata->waiting_task) { + xbt_dynar_foreach(p_simdata->waiting_task->simdata->sleeping,_cursor,proc) { + if(proc==process) + xbt_dynar_remove_at(p_simdata->waiting_task->simdata->sleeping,_cursor,&proc); + } if(p_simdata->waiting_task->simdata->compute) surf_workstation_resource->common_public-> action_free(p_simdata->waiting_task->simdata->compute); - else if (p_simdata->waiting_task->simdata->comm) + else if (p_simdata->waiting_task->simdata->comm) { surf_workstation_resource->common_public-> action_change_state(p_simdata->waiting_task->simdata->comm,SURF_ACTION_FAILED); - else + surf_workstation_resource->common_public-> + action_free(p_simdata->waiting_task->simdata->comm); + } else CRITICAL0("UNKNOWN STATUS. Please report this bug."); } else { /* Must be trying to put a task somewhere */ if(process==MSG_process_self()) {