From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755091Ab1JSWMj (ORCPT ); Wed, 19 Oct 2011 18:12:39 -0400 Received: from mail-gy0-f174.google.com ([209.85.160.174]:53667 "EHLO mail-gy0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751455Ab1JSWMh (ORCPT ); Wed, 19 Oct 2011 18:12:37 -0400 Message-ID: <4E9F4B50.1060207@gmail.com> Date: Wed, 19 Oct 2011 16:12:32 -0600 From: David Ahern User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0) Gecko/20110927 Thunderbird/7.0 MIME-Version: 1.0 To: Arnaldo Carvalho de Melo CC: linux-kernel@vger.kernel.org, mingo@elte.hu, peterz@infradead.org, fweisbec@gmail.com Subject: Re: [PATCH] perf top: fix crash on annotate request References: <1319048598-15030-1-git-send-email-dsahern@gmail.com> <20111019183848.GE2229@ghostprotocols.net> <4E9F1AA0.4010706@gmail.com> <20111019192011.GG2229@ghostprotocols.net> In-Reply-To: <20111019192011.GG2229@ghostprotocols.net> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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