perf script: Check if evsel has callchains before trying to use it
authorArnaldo Carvalho de Melo <acme@redhat.com>
Mon, 4 Jun 2018 13:34:20 +0000 (10:34 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 5 Jun 2018 13:09:54 +0000 (10:09 -0300)
We were checking just if callchain processing was asked for by the
user, not if the evsel itself has callchains, and since we can have
some evsels with callchains and others without, check that.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-inxl7k49q9f9w1se039fbxuw@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/builtin-script.c

index 48e940efb3cb9b42e8132ab4d56aaf9faef11f17..b3bf35512d2198a94e46a7ecaf6052bca616ee7d 100644 (file)
@@ -606,7 +606,7 @@ static int perf_sample__fprintf_start(struct perf_sample *sample,
        if (PRINT_FIELD(COMM)) {
                if (latency_format)
                        printed += fprintf(fp, "%8.8s ", thread__comm_str(thread));
-               else if (PRINT_FIELD(IP) && symbol_conf.use_callchain)
+               else if (PRINT_FIELD(IP) && evsel__has_callchain(evsel) && symbol_conf.use_callchain)
                        printed += fprintf(fp, "%s ", thread__comm_str(thread));
                else
                        printed += fprintf(fp, "%16s ", thread__comm_str(thread));