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,
/* 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;
#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"
/* 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);
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;
}