Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Bug Fix: The symptom is hard to describe. Sometimes some tasks were not scheduled...
authoralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 5 Mar 2008 01:51:45 +0000 (01:51 +0000)
committeralegrand <alegrand@48e7efb5-ca39-0410-a469-dd3cf9ba447f>
Wed, 5 Mar 2008 01:51:45 +0000 (01:51 +0000)
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@5260 48e7efb5-ca39-0410-a469-dd3cf9ba447f

src/simdag/sd_global.c

index ee029e0..17d7ae5 100644 (file)
@@ -392,7 +392,7 @@ SD_task_t* SD_simulate(double how_long)
 {
   double total_time = 0.0; /* we stop the simulation when total_time >= how_long */
   double elapsed_time = 0.0;
-  SD_task_t task, dst;
+  SD_task_t task, task_safe, dst;
   SD_dependency_t dependency;
   surf_action_t action;
   SD_task_t *changed_tasks = NULL;
@@ -421,7 +421,7 @@ SD_task_t* SD_simulate(double how_long)
   sd_global->watch_point_reached = 0;
 
   /* explore the ready tasks */
-  xbt_swag_foreach(task, sd_global->ready_task_set) {
+  xbt_swag_foreach_safe(task, task_safe, sd_global->ready_task_set) {
     INFO1("Executing task '%s'", SD_task_get_name(task));
     if ((task->state_changed = __SD_task_try_to_run(task))) {
       changed_tasks[changed_task_number++] = task; /* replace NULL by the task */