Messages in this thread | | | Date | Wed, 18 Nov 2015 09:20:33 +0100 | From | Ingo Molnar <> | Subject | Re: [BUG REPORT] perf tools: x86_64: Broken calllchain when sampling taken at 'callq' instruction |
| |
* Wangnan (F) <wangnan0@huawei.com> 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 <stdio.h> > #include <unistd.h> > #include <sys/time.h> > > 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
| |