Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'hypervisor' of scm.gforge.inria.fr:/gitroot/simgrid/simgrid into hypervisor
[simgrid.git] / src / simix / smx_global.c
index bb08d1e..3b227d7 100644 (file)
@@ -315,6 +315,7 @@ void SIMIX_run(void)
        timer = xbt_heap_pop(simix_timers);
        if (timer->func)
          ((void (*)(void*))timer->func)(timer->args);
+       xbt_free(timer);
     }
     /* Wake up all processes waiting for a Surf action to finish */
     xbt_dynar_foreach(model_list, iter, model) {
@@ -322,8 +323,13 @@ void SIMIX_run(void)
       while ((action = xbt_swag_extract(set)))
         SIMIX_simcall_post((smx_action_t) action->data);
       set = model->states.done_action_set;
-      while ((action = xbt_swag_extract(set)))
-        SIMIX_simcall_post((smx_action_t) action->data);
+
+      while ((action = xbt_swag_extract(set))) {
+        if (action->data == NULL)
+          XBT_DEBUG("probably vcpu's action %p, skip", action);
+        else
+          SIMIX_simcall_post((smx_action_t) action->data);
+      }
     }
 
     /* Clean processes to destroy */