From 59008ee54c328fe3f8ba4808d947269bdd71a058 Mon Sep 17 00:00:00 2001 From: Millian Poquet Date: Tue, 19 Jan 2016 11:58:35 +0100 Subject: [PATCH 1/1] Cleaner patch for issue 15. 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 | 8 -------- src/simix/smx_process.cpp | 6 +++++- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/msg/msg_process.cpp b/src/msg/msg_process.cpp index 5d588bdf95..a941ea21ba 100644 --- a/src/msg/msg_process.cpp +++ b/src/msg/msg_process.cpp @@ -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; diff --git a/src/simix/smx_process.cpp b/src/simix/smx_process.cpp index aecd61f01b..600de45f34 100644 --- a/src/simix/smx_process.cpp +++ b/src/simix/smx_process.cpp @@ -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; } -- 2.20.1