perf sort: Fix segfault with basic block 'cycles' sort dimension
Skip the sample which doesn't have branch_info to avoid segmentation fault: The fault can be reproduced by: perf record -a perf report -F cycles Signed-off-by: Changbin Du <changbin.du@intel.com> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Fixes: 0e332f033a82 ("perf tools: Add support for cycles, weight branch_info field") Link: http://lkml.kernel.org/r/20170313083148.23568-1-changbin.du@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
12a601c643
commit
4b0b3aa6a2
@ -846,6 +846,9 @@ static int hist_entry__mispredict_snprintf(struct hist_entry *he, char *bf,
|
||||
static int64_t
|
||||
sort__cycles_cmp(struct hist_entry *left, struct hist_entry *right)
|
||||
{
|
||||
if (!left->branch_info || !right->branch_info)
|
||||
return cmp_null(left->branch_info, right->branch_info);
|
||||
|
||||
return left->branch_info->flags.cycles -
|
||||
right->branch_info->flags.cycles;
|
||||
}
|
||||
@ -853,6 +856,8 @@ sort__cycles_cmp(struct hist_entry *left, struct hist_entry *right)
|
||||
static int hist_entry__cycles_snprintf(struct hist_entry *he, char *bf,
|
||||
size_t size, unsigned int width)
|
||||
{
|
||||
if (!he->branch_info)
|
||||
return scnprintf(bf, size, "%-.*s", width, "N/A");
|
||||
if (he->branch_info->flags.cycles == 0)
|
||||
return repsep_snprintf(bf, size, "%-*s", width, "-");
|
||||
return repsep_snprintf(bf, size, "%-*hd", width,
|
||||
|
Loading…
x
Reference in New Issue
Block a user