perf record/report: Fix PID/COMM handling
authorIngo Molnar <mingo@elte.hu>
Thu, 4 Jun 2009 11:41:22 +0000 (13:41 +0200)
committerIngo Molnar <mingo@elte.hu>
Thu, 4 Jun 2009 11:41:37 +0000 (13:41 +0200)
Fix two bugs causing lost comm mappings:

 - initial PID is not 0 but getpid()

 - when we are unable to handle an mmap event, dont assume the event
   itself is broken - try to parse the stream. This way we wont lose
   comm events.

Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: Marcelo Tosatti <mtosatti@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Documentation/perf_counter/builtin-record.c
Documentation/perf_counter/builtin-report.c

index efa2eb498e9cd00b9a83f207491ebcfa4405bff1..bf59df5bddf3651ff30a2cd69e098c9574cff2ae 100644 (file)
@@ -430,7 +430,7 @@ static int __cmd_record(int argc, const char **argv)
        }
 
        if (!system_wide) {
-               open_counters(-1, target_pid != -1 ? target_pid : 0);
+               open_counters(-1, target_pid != -1 ? target_pid : getpid());
        } else for (i = 0; i < nr_cpus; i++)
                open_counters(i, target_pid);
 
index 86f23f0991f1407d812a7b9440730bc15402b088..ff6f657476a933c4896f8cd3f839846212c21a54 100644 (file)
@@ -852,7 +852,7 @@ process_mmap_event(event_t *event, unsigned long offset, unsigned long head)
 
        if (thread == NULL || map == NULL) {
                dprintf("problem processing PERF_EVENT_MMAP, skipping event.\n");
-               return -1;
+               return 0;
        }
 
        thread__insert_map(thread, map);