lkml.org 
[lkml]   [2012]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] perf report: fix crash showing warning related to kernel maps
    Date
    While testing https://lkml.org/lkml/2012/4/10/123 I hit this crash:

    (gdb) bt
    0 0x000000000042000f in __cmd_report (rep=0x7fff80cec580) at builtin-report.c:380
    1 cmd_report (argc=0, argv=<optimized out>, prefix=<optimized out>) at builtin-report.c:759
    2 0x0000000000414513 in run_builtin (p=0x7724a8, argc=3, argv=0x7fff80ceca70) at perf.c:273
    3 0x0000000000413d41 in handle_internal_command (argv=0x7fff80ceca70, argc=3) at perf.c:345
    4 run_argv (argv=0x7fff80cec880, argcp=0x7fff80cec88c) at perf.c:389
    5 main (argc=3, argv=0x7fff80ceca70) at perf.c:487

    kernel_map can be NULL, so need to handle it while dumping a warning
    to user.

    v2:
    - fixed RB_EMPTY_ROOT check -- desc takes the altnerative output when RB_EMPTY_ROOT is false.

    Signed-off-by: David Ahern <dsahern@gmail.com>
    ---
    tools/perf/builtin-report.c | 17 ++++++++++++-----
    1 files changed, 12 insertions(+), 5 deletions(-)

    diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
    index 2e31743..42c06db4 100644
    --- a/tools/perf/builtin-report.c
    +++ b/tools/perf/builtin-report.c
    @@ -374,16 +374,23 @@ static int __cmd_report(struct perf_report *rep)
    (kernel_map->dso->hit &&
    (kernel_kmap->ref_reloc_sym == NULL ||
    kernel_kmap->ref_reloc_sym->addr == 0))) {
    - const struct dso *kdso = kernel_map->dso;
    + const char *desc =
    + "As no suitable kallsyms nor vmlinux was found, kernel samples\n"
    + "can't be resolved.";
    +
    + if (kernel_map) {
    + const struct dso *kdso = kernel_map->dso;
    + if (!RB_EMPTY_ROOT(&kdso->symbols[MAP__FUNCTION])) {
    + desc = "If some relocation was applied (e.g. "
    + "kexec) symbols may be misresolved.";
    + }
    + }

    ui__warning(
    "Kernel address maps (/proc/{kallsyms,modules}) were restricted.\n\n"
    "Check /proc/sys/kernel/kptr_restrict before running 'perf record'.\n\n%s\n\n"
    "Samples in kernel modules can't be resolved as well.\n\n",
    - RB_EMPTY_ROOT(&kdso->symbols[MAP__FUNCTION]) ?
    -"As no suitable kallsyms nor vmlinux was found, kernel samples\n"
    -"can't be resolved." :
    -"If some relocation was applied (e.g. kexec) symbols may be misresolved.");
    + desc);
    }

    if (dump_trace) {
    --
    1.7.5.4


    \
     
     \ /
      Last update: 2012-04-16 04:57    [W:2.348 / U:0.640 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site