Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Do not run an empty process list.
[simgrid.git] / src / simix / smx_global.c
index b888675..cd48273 100644 (file)
@@ -201,7 +201,7 @@ void SIMIX_run(void)
 #ifdef TIME_BENCH
     smx_ctx_raw_new_sr();
 #endif
-    do {
+    while (xbt_dynar_length(simix_global->process_to_run)) {
       XBT_DEBUG("New Sub-Schedule Round; size(queue)=%lu",
               xbt_dynar_length(simix_global->process_to_run));
       SIMIX_context_runall(simix_global->process_to_run);
@@ -209,7 +209,7 @@ void SIMIX_run(void)
         XBT_DEBUG("Handling request %p", req);
         SIMIX_request_pre(req, 0);
       }
-    } while (xbt_dynar_length(simix_global->process_to_run));
+    }
 
     time = surf_solve(SIMIX_timer_next());
 
@@ -240,6 +240,10 @@ void SIMIX_run(void)
 
   if (xbt_swag_size(simix_global->process_list) != 0) {
 
+#ifdef HAVE_TRACING
+    TRACE_end();
+#endif
+
     XBT_WARN("Oops ! Deadlock or code not perfectly clean.");
     SIMIX_display_process_status();
     xbt_abort();