Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Cleaner patch for issue 15.
authorMillian Poquet <millian.poquet@inria.fr>
Tue, 19 Jan 2016 10:58:35 +0000 (11:58 +0100)
committerMillian Poquet <millian.poquet@inria.fr>
Tue, 19 Jan 2016 10:58:35 +0000 (11:58 +0100)
Instead of using a pid hack to generate the process creation trace in
MSG_process_create_with_environment, this is now done in the function that
handles the pids: SIMIX_process_create.

src/msg/msg_process.cpp
src/simix/smx_process.cpp

index 5d588bd..a941ea2 100644 (file)
@@ -165,12 +165,6 @@ msg_process_t MSG_process_create_with_environment(const char *name,
   simdata->data = data;
   simdata->last_errno = MSG_OK;
 
-  /* The TRACE process is created before the SIMIX one
-   * to avoid issues when SIMIX decides to start the new
-   * process right now (before returning the flow control). */
-  unsigned int next_pid = SIMIX_process_get_maxpid();
-  TRACE_msg_process_create(name, next_pid, host);
-
   /* Let's create the process: SIMIX may decide to start it right now,
    * even before returning the flow control to us */
   process = simcall_process_create(name, code, simdata, sg_host_get_name(host), -1,
@@ -180,10 +174,8 @@ msg_process_t MSG_process_create_with_environment(const char *name,
     /* Undo everything we have just changed */
     xbt_free(simdata);
     return NULL;
-    // FIXME: is the TRACE process destroyed in this case?
   }
   else {
-    xbt_assert(next_pid == process->pid, "Bad trace pid hack");
     simcall_process_on_exit(process,(int_f_pvoid_pvoid_t)TRACE_msg_process_kill,process);
   }
   return process;
index aecd61f..600de45 100644 (file)
@@ -13,6 +13,7 @@
 #include "src/mc/mc_replay.h"
 #include "src/mc/mc_client.h"
 #include "src/simix/smx_private.hpp"
+#include "src/msg/msg_private.h"
 
 #ifdef HAVE_SMPI
 #include "src/smpi/private.h"
@@ -58,7 +59,7 @@ void SIMIX_process_cleanup(smx_process_t process)
 
   /* Unregister from the kill timer if any */
   if (process->kill_timer != NULL)
-         SIMIX_timer_remove(process->kill_timer);
+      SIMIX_timer_remove(process->kill_timer);
 
   xbt_os_mutex_acquire(simix_global->mutex);
 
@@ -320,6 +321,9 @@ smx_process_t SIMIX_process_create(
           sg_host_get_name(process->host), kill_time);
       process->kill_timer = SIMIX_timer_set(kill_time, kill_process, process);
     }
+
+    /* Tracing the process creation */
+    TRACE_msg_process_create(process->name, process->pid, process->host);
   }
   return process;
 }