lkml.org 
[lkml]   [2011]   [Oct]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [PATCH] perf top: fix crash on annotate request


    Getting another crash with the default sym sorting -- the addr is much
    less than the start of the sym so the offset goes negative:

    (gdb) bt
    #0 0x0000000000429de3 in symbol__inc_addr_samples (sym=0x8f0f90,
    map=0x8aae00, evidx=0,
    addr=329985) at util/annotate.c:73
    #1 0x000000000041b073 in record_precise_ip (he=0x8a2a10, counter=0,
    ip=329985)
    at builtin-top.c:221
    #2 0x000000000041c821 in perf_event__process_sample (event=0x7fffefbc74c8,
    sample=0x7fffffffe1b0, session=0x89a140) at builtin-top.c:801
    #3 0x000000000041c8d4 in perf_session__mmap_read_idx (self=0x89a140,
    idx=12)
    at builtin-top.c:821
    #4 0x000000000041c95b in perf_session__mmap_read (self=0x89a140) at
    builtin-top.c:832
    #5 0x000000000041cdf1 in __cmd_top () at builtin-top.c:960
    #6 0x000000000041d585 in cmd_top (argc=0, argv=0x7fffffffe590, prefix=0x0)
    at builtin-top.c:1252
    #7 0x00000000004077b9 in run_builtin (p=0x75fb68, argc=2,
    argv=0x7fffffffe590) at perf.c:286
    #8 0x00000000004079bb in handle_internal_command (argc=2,
    argv=0x7fffffffe590) at perf.c:358
    #9 0x0000000000407b07 in run_argv (argcp=0x7fffffffe47c,
    argv=0x7fffffffe470) at perf.c:402
    #10 0x0000000000407dee in main (argc=2, argv=0x7fffffffe590) at perf.c:512


    The following fixes the crash. If it seems reasonable I'll add to the
    other one:

    diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c
    index bc8f477..f1f20b5 100644
    --- a/tools/perf/util/annotate.c
    +++ b/tools/perf/util/annotate.c
    @@ -63,6 +63,8 @@ int symbol__inc_addr_samples(struct symbol *sym,
    struct map *map,
    return -ENOMEM;

    pr_debug3("%s: addr=%#" PRIx64 "\n", __func__, map->unmap_ip(map,
    addr));
    + if (addr < sym->start)
    + return 0;

    if (addr >= sym->end)
    return 0;

    I'll combine


    \
     
     \ /
      Last update: 2011-10-20 00:15    [W:0.022 / U:30.612 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site