{
struct processtop *newproc;
+ if (opt_pid && tid != opt_pid)
+ return NULL;
+
/* if the PID already exists, we just rename the process */
/* FIXME : need to integrate with clone/fork/exit to be accurate */
newproc = find_process_tid(ctx, tid, comm);
+
if (!newproc) {
newproc = g_new0(struct processtop, 1);
newproc->tid = tid;
gint i;
struct processtop *tmp;
+ if (!parent)
+ return;
+
for (i = 0; i < parent->threads->len; i++) {
tmp = g_ptr_array_index(parent->threads, i);
if (tmp == thread)
proc = add_proc(<tngtop, tid, procname, timestamp);
update_proc(proc, pid, tid, ppid, vpid, vtid, vppid, procname);
- free(proc->comm);
- proc->comm = strdup(procname);
- proc->pid = pid;
+ if (proc) {
+ free(proc->comm);
+ proc->comm = strdup(procname);
+ proc->pid = pid;
+ }
return BT_CB_OK;