perf report: Warn on callchain output request from non-callchain file
authorFrederic Weisbecker <fweisbec@gmail.com>
Sun, 5 Jul 2009 05:39:17 +0000 (07:39 +0200)
committerIngo Molnar <mingo@elte.hu>
Sun, 5 Jul 2009 08:30:21 +0000 (10:30 +0200)
perf report segfaults while trying to handle callchains from a non
callchain data file.

Instead of a segfault, print a useful message to the user.

Reported-by: Jens Axboe <jens.axboe@oracle.com>
Reported-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Anton Blanchard <anton@samba.org>
Cc: Jens Axboe <jens.axboe@oracle.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
LKML-Reference: <1246772361-9960-1-git-send-email-fweisbec@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
tools/perf/builtin-report.c

index fa937f5c3c395afb0e44c1553877fe1b8ba5733e..9f9575afab0816d3758b23678e9dc84de83b2c50 100644 (file)
@@ -1684,9 +1684,19 @@ static int __cmd_report(void)
 
        sample_type = perf_header__sample_type();
 
-       if (sort__has_parent && !(sample_type & PERF_SAMPLE_CALLCHAIN)) {
-               fprintf(stderr, "selected --sort parent, but no callchain data\n");
-               exit(-1);
+       if (!(sample_type & PERF_SAMPLE_CALLCHAIN)) {
+               if (sort__has_parent) {
+                       fprintf(stderr, "selected --sort parent, but no"
+                                       " callchain data. Did you call"
+                                       " perf record without -g?\n");
+                       exit(-1);
+               }
+               if (callchain) {
+                       fprintf(stderr, "selected -c but no callchain data."
+                                       " Did you call perf record without"
+                                       " -g?\n");
+                       exit(-1);
+               }
        }
 
        if (load_kernel() < 0) {