• Arnaldo Carvalho de Melo's avatar
    perf annotate browser: Handle NULL jump targets · 9481ede9
    Arnaldo Carvalho de Melo authored
    In annotate_browser__mark_jump_targets
    
    702                     dlt = browser->offsets[dl->ops.target];
    703                     bdlt = disasm_line__browser(dlt);
    704                     bdlt->jump_target = true;
    705             }
    706
    707     }
    
    (gdb) p size
    $5 = 2415
    (gdb) p offset
    $6 = 140
    (gdb) p dl->ops.target
    $7 = 143
    (gdb) p browser->offsets[143]
    $8 = (struct disasm_line *) 0x0
    (gdb) p dl->name
    $9 = 0x2363bd0 "je"
    (gdb)
    
    Really strange, the code assumed that at the jump target we would have
    an assembly line, but only in the previous instruction offset we have a
    'lock':
    
    (gdb) p browser->offsets[144]
    $10 = (struct disasm_line *) 0x0
    (gdb) p browser->offsets[142]
    $11 = (struct disasm_line *) 0x27bd620
    (gdb) p browser->offsets[142]->name
    $12 = 0x237a8a0 "lock"
    (gdb)
    
    I'll study this more, but for now I'll just check if there is a
    disasm_line at dl->ops.target, i.e. a valid jump target.
    Reported-by: default avatarHagen Paul Pfeifer <hagen@jauu.net>
    Reported-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.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-inzjrzyqhkzyv78met2vula6@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    9481ede9
annotate.c 19.9 KB