Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755257AbbKRIUj (ORCPT ); Wed, 18 Nov 2015 03:20:39 -0500 Received: from mail-wm0-f54.google.com ([74.125.82.54]:35233 "EHLO mail-wm0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752098AbbKRIUh (ORCPT ); Wed, 18 Nov 2015 03:20:37 -0500 Date: Wed, 18 Nov 2015 09:20:33 +0100 From: Ingo Molnar To: "Wangnan (F)" Cc: Jiri Olsa , Arnaldo Carvalho de Melo , David Ahern , Peter Zijlstra , Milian Wolff , linux-kernel@vger.kernel.org, pi3orama , lizefan 00213767 Subject: Re: [BUG REPORT] perf tools: x86_64: Broken calllchain when sampling taken at 'callq' instruction Message-ID: <20151118082033.GA24726@gmail.com> References: <564C26C4.2040603@huawei.com> <564C3011.8090002@huawei.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <564C3011.8090002@huawei.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 Content-Length: 1577 Lines: 58 * Wangnan (F) wrote: > On 2015/11/18 15:20, Wangnan (F) wrote: > >Hi all, > > > >When analysising Jiri's patchset [1] I found a dwarf unwind problem. > >On x86 platform, when sample is at a 'callq' instruction, dwarf based > >stack unwind always fail. > > > >I compile a small C source file with debug information, turn off > >frame pointer and disable optimization: > > > >$ gcc -g -O0 -fomit-frame-pointer ./test_dwarf_unwind.c -o > >./test_dwarf_unwind > > For whom want to test it: here is the test code I used. > > #include > #include > #include > > static volatile int x = 0; > > int funcc(void) > { > struct timeval tv1, tv2; > unsigned long us1, us2; > > gettimeofday(&tv1, NULL); > > us1 = tv1.tv_sec * 1000000 + tv1.tv_usec; > > while(1) { > x = x + 100; > gettimeofday(&tv2, NULL); > us2 = tv2.tv_sec * 1000000 + tv2.tv_usec; > if (us2 - us1 >= 3000000) > break; > } > return x; > } > int funcb(void) { return funcc();} > int funca(void) { return funcb();} > int main() { funca(); return 0;} What CPU model is this, and what event was used - PEBS perhaps? This might be some sort of PMU sampling bug/quirk/misfeature - or perhaps a kernel side fixup that went bad? Thanks, Ingo -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/