diff options
author | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2010-03-10 06:58:22 -0500 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2010-03-10 06:58:22 -0500 |
commit | 2d5cf4c93fe7d57f797a74513e24aeabe776f636 (patch) | |
tree | b4fa663cdc9d989d57b8b912976249fb9f54996d | |
parent | 08d4d26060d8e5d089b9c9733204a220233c75c8 (diff) |
Ignore fork events that are just new threads being spawned.
These would cause mysterious new processes to show up.
-rw-r--r-- | collector.c | 2 | ||||
-rw-r--r-- | tracker.c | 13 |
2 files changed, 13 insertions, 2 deletions
diff --git a/collector.c b/collector.c index 438b920..1c7af11 100644 --- a/collector.c +++ b/collector.c @@ -574,7 +574,7 @@ process_comm (Collector *collector, comm_event_t *comm) static void process_fork (Collector *collector, fork_event_t *fork) { - d_print ("ppid: %d pid: %d ptid: %d tid %d", + g_print ("ppid: %d pid: %d ptid: %d tid %d\n", fork->ppid, fork->pid, fork->ptid, fork->tid); tracker_add_fork (collector->tracker, fork->ppid, fork->pid); @@ -493,6 +493,12 @@ process_fork (state_t *state, fork_t *fork) process_t *parent = g_hash_table_lookup ( state->processes_by_pid, GINT_TO_POINTER (GET_PID (fork->header))); + if (GET_PID (fork->header) == fork->child_pid) + { + /* Just a new thread being spawned */ + return; + } + #if 0 if (parent) #endif @@ -505,7 +511,12 @@ process_fork (state_t *state, fork_t *fork) #endif process->pid = fork->child_pid; - process->comm = g_strdup (parent? parent->comm : "<unknown>"); + + if (parent) + process->comm = g_strdup (parent->comm); + else + process->comm = g_strdup_printf ("<pid %d>", fork->child_pid); + process->maps = g_ptr_array_new (); if (parent) |