diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-02-11 09:09:54 -0500 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2011-02-11 09:09:54 -0500 |
commit | 0849327d13a0bd7f6512b7c21f4b3e79efb2076d (patch) | |
tree | 2a63d79f17dff257b8ac160f0138bdb00f6e4747 /tools/perf/builtin-report.c | |
parent | 7c940c18c57e45910f7dd9a4011c4658cacba4b6 (diff) |
perf report: Fix initializion of annotate symbol priv area
We only allocate it when in TUI mode. In --stdio mode unconditionally
initializing this area leads to memory corruption.
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/builtin-report.c')
-rw-r--r-- | tools/perf/builtin-report.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index f403aced4cba..f9a99a1ce609 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c | |||
@@ -44,6 +44,7 @@ static const char default_pretty_printing_style[] = "normal"; | |||
44 | static const char *pretty_printing_style = default_pretty_printing_style; | 44 | static const char *pretty_printing_style = default_pretty_printing_style; |
45 | 45 | ||
46 | static char callchain_default_opt[] = "fractal,0.5"; | 46 | static char callchain_default_opt[] = "fractal,0.5"; |
47 | static symbol_filter_t annotate_init; | ||
47 | 48 | ||
48 | static struct hists *perf_session__hists_findnew(struct perf_session *self, | 49 | static struct hists *perf_session__hists_findnew(struct perf_session *self, |
49 | u64 event_stream, u32 type, | 50 | u64 event_stream, u32 type, |
@@ -167,7 +168,7 @@ static int process_sample_event(union perf_event *event, | |||
167 | struct perf_event_attr *attr; | 168 | struct perf_event_attr *attr; |
168 | 169 | ||
169 | if (perf_event__preprocess_sample(event, session, &al, sample, | 170 | if (perf_event__preprocess_sample(event, session, &al, sample, |
170 | symbol__annotate_init) < 0) { | 171 | annotate_init) < 0) { |
171 | fprintf(stderr, "problem processing %d event, skipping it.\n", | 172 | fprintf(stderr, "problem processing %d event, skipping it.\n", |
172 | event->header.type); | 173 | event->header.type); |
173 | return -1; | 174 | return -1; |
@@ -520,6 +521,7 @@ int cmd_report(int argc, const char **argv, const char *prefix __used) | |||
520 | */ | 521 | */ |
521 | if (use_browser > 0) { | 522 | if (use_browser > 0) { |
522 | symbol_conf.priv_size = sizeof(struct annotation); | 523 | symbol_conf.priv_size = sizeof(struct annotation); |
524 | annotate_init = symbol__annotate_init; | ||
523 | /* | 525 | /* |
524 | * For searching by name on the "Browse map details". | 526 | * For searching by name on the "Browse map details". |
525 | * providing it only in verbose mode not to bloat too | 527 | * providing it only in verbose mode not to bloat too |