Skip to content

Commit 15f3fa4

Browse files
author
Ingo Molnar
committed
perf annotate: Fix segmentation fault
Linus reported this perf annotate segfault: [torvalds@nehalem git]$ perf annotate unmap_vmas Segmentation fault #0 map__clone (self=<value optimized out>) at builtin-annotate.c:236 #1 thread__fork (self=<value optimized out>) at builtin-annotate.c:372 The bug here was that builtin-annotate.c was a copy of builtin-report.c and a threading related fix to builtin-report.c didnt get propagated to builtin-annotate.c ... Reported-by: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <mingo@elte.hu>
1 parent f738eb1 commit 15f3fa4

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

tools/perf/builtin-annotate.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,6 +980,13 @@ process_fork_event(event_t *event, unsigned long offset, unsigned long head)
980980
(void *)(long)(event->header.size),
981981
event->fork.pid, event->fork.ppid);
982982

983+
/*
984+
* A thread clone will have the same PID for both
985+
* parent and child.
986+
*/
987+
if (thread == parent)
988+
return 0;
989+
983990
if (!thread || !parent || thread__fork(thread, parent)) {
984991
dprintf("problem processing PERF_EVENT_FORK, skipping event.\n");
985992
return -1;

0 commit comments

Comments
 (0)