perf trace: Check if sample raw_data field is set
Sometimes we're segfaulting because we were expecting that the perf_sample.raw_data field was set as requested, but in some cases that needs further investigation, that field can be NULL, leading to segfaults. Make the tool more robust by checking that before calling any per event handlers that may try to use that field. Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Namhyung Kim <namhyung@gmail.com> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-g1fmodl6ys4lq8honbj1igoi@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
3a531260a1
commit
fc551f8d44
|
@ -268,6 +268,13 @@ again:
|
||||||
if (evlist->threads->map[0] == -1 || evlist->threads->nr > 1)
|
if (evlist->threads->map[0] == -1 || evlist->threads->nr > 1)
|
||||||
printf("%d ", sample.tid);
|
printf("%d ", sample.tid);
|
||||||
|
|
||||||
|
if (sample.raw_data == NULL) {
|
||||||
|
printf("%s sample with no payload for tid: %d, cpu %d, raw_size=%d, skipping...\n",
|
||||||
|
perf_evsel__name(evsel), sample.tid,
|
||||||
|
sample.cpu, sample.raw_size);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
handler = evsel->handler.func;
|
handler = evsel->handler.func;
|
||||||
handler(trace, evsel, &sample);
|
handler(trace, evsel, &sample);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue