From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756711AbbAHPIc (ORCPT ); Thu, 8 Jan 2015 10:08:32 -0500 Received: from mail.kernel.org ([198.145.29.136]:47166 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753171AbbAHPIb (ORCPT ); Thu, 8 Jan 2015 10:08:31 -0500 Date: Thu, 8 Jan 2015 12:08:24 -0300 From: Arnaldo Carvalho de Melo To: Namhyung Kim Cc: Ingo Molnar , Peter Zijlstra , Jiri Olsa , LKML , Adrian Hunter , Stephane Eranian , Andi Kleen , Frederic Weisbecker Subject: Re: [PATCH] perf hists browser: Fix segfault when showing callchain Message-ID: <20150108150824.GD15396@kernel.org> References: <1419401076-21700-1-git-send-email-namhyung@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1419401076-21700-1-git-send-email-namhyung@kernel.org> X-Url: http://acmel.wordpress.com User-Agent: Mutt/1.5.23 (2014-03-12) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Em Wed, Dec 24, 2014 at 03:04:36PM +0900, Namhyung Kim escreveu: > When perf report on TUI shows callchain it checks first node has > siblings to determine whether it needs to print percentage value. But > it missed a case that first node is NULL. So sometimes it segfaults > like below: Thanks, applied. > $ perf top -g > perf: Segmentation fault > -------- backtrace -------- > perf[0x4fcefb] > /usr/lib/libc.so.6(+0x33b20)[0x7f2a35839b20] > perf(rb_next+0x8)[0x47d3d8] > perf[0x4f6058] > perf[0x4f833b] > perf[0x4f8610] > perf[0x4f209e] > perf(ui_browser__run+0x3a)[0x4f2e6a] > perf[0x4f94ee] > perf(perf_evlist__tui_browse_hists+0x94)[0x4fbbf4] > perf[0x444d10] > /usr/lib/libpthread.so.0(+0x7314)[0x7f2a37070314] > /usr/lib/libc.so.6(clone+0x6d)[0x7f2a358ee5bd] > > $ addr2line -e `which perf` 0x4f6058 > /home/namhyung/project/linux/tools/perf/ui/browsers/hists.c:553 > > I don't know why the backtrace didn't print some symbols.. > > Fixes: 4087d11cd945 ("perf hists browser: Print overhead percent value for first-level callchain") > Signed-off-by: Namhyung Kim > --- > tools/perf/ui/browsers/hists.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/perf/ui/browsers/hists.c b/tools/perf/ui/browsers/hists.c > index e6bb04b5b09b..788506eef567 100644 > --- a/tools/perf/ui/browsers/hists.c > +++ b/tools/perf/ui/browsers/hists.c > @@ -550,7 +550,7 @@ static int hist_browser__show_callchain(struct hist_browser *browser, > bool need_percent; > > node = rb_first(root); > - need_percent = !!rb_next(node); > + need_percent = node && rb_next(node); > > while (node) { > struct callchain_node *child = rb_entry(node, struct callchain_node, rb_node); > -- > 2.1.3