<div dir="ltr">That is, the patch is not necessary?<div><br></div><div>I will take a look at why we produce different function names on Linux-x86 and PowerPC. Looks like we should print<br></div><div>the function name corresponding to file/line location specified (that is, prefer FooBarBaz). Just in case -</div><div>could you share a PowerPC binary for print-stack-trace.cc.tmp (with inlined function) with me, so that I can debug llvm-symbolizer on it if necessary?</div><div>Thanks!</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Oct 28, 2014 at 3:18 PM, Will Schmidt <span dir="ltr"><<a href="mailto:will_schmidt@vnet.ibm.com" target="_blank">will_schmidt@vnet.ibm.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Mon, 2014-10-27 at 15:48 -0700, Alexey Samsonov wrote:<br>
> Hi Will,<br>
><br>
><br>
> It's possible that FooBarBaz() just doesn't get inlined. Could you<br>
> check if the attached patch fixes the test for you?<br>
<br>
</span>Thanks for the patch.  I verified that the function is being inlined<br>
with -O3 or with the inline attribute, as was expected.  I was poking a<br>
few more parts with gdb to make sense of things, and determined that I<br>
did have a stale/old object somewhere in my build..  (gdb could not find<br>
the symbolize_inline_frames field, which was obviously a bad thing.. ).<br>
<br>
So with a fresh(er) build, the test still fails, but differently.  As<br>
seen below, the symbolize_inline_frames=false is causing the main()<br>
entry to be suppressed, rather than the FooBarBaz() entry.<br>
<br>
<br>
> export ASAN_OPTIONS=symbolize_inline_frames=true<br>
> <...>/asan/Output/print-stack-trace.cc.tmp<br>
    #0 0x100c4e5c in __sanitizer_print_stack_trace <...>/asan/asan_stack.cc:23<br>
    #1 0x100e2c48 in FooBarBaz <...>/TestCases/print-stack-trace.cc:12:3<br>
    #2 0x100e2c48 in main <...>/TestCases/print-stack-trace.cc:16<br>
    #3 0x100000424548 (/lib64/power8/libc.so.6+0x44548)<br>
<br>
> export ASAN_OPTIONS=symbolize_inline_frames=false<br>
> <...>/asan/Output/print-stack-trace.cc.tmp<br>
    #0 0x100c4e5c in __sanitizer_print_stack_trace <...>/asan/asan_stack.cc:23<br>
    #1 0x100e2c48 in FooBarBaz <...>/TestCases/print-stack-trace.cc:12:3<br>
    #2 0x100000424548 (/lib64/power8/libc.so.6+0x44548)<br>
<br>
Under gdb, backtrace is:<br>
(gdb) bt<br>
#0  __sanitizer_print_stack_trace () at <...>/lib/asan/asan_stack.cc:24<br>
#1  0x00000000100e2c4c in FooBarBaz () at <...>/sanitizer_common/TestCases/print-stack-trace.cc:12<br>
#2  main () at <...>/sanitizer_common/TestCases/print-stack-trace.cc:16<br>
<div class="HOEnZb"><div class="h5"><br>
<br>
<br>
<br>
<br>
><br>
> On Mon, Oct 27, 2014 at 3:23 PM, Will Schmidt<br>
> <<a href="mailto:will_schmidt@vnet.ibm.com">will_schmidt@vnet.ibm.com</a>> wrote:<br>
>         On Fri, 2014-10-24 at 18:34 +0000, Alexey Samsonov wrote:<br>
>         > Author: samsonov<br>
>         > Date: Fri Oct 24 13:34:43 2014<br>
>         > New Revision: 220582<br>
>         ><br>
>         > URL: <a href="http://llvm.org/viewvc/llvm-project?rev=220582&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=220582&view=rev</a><br>
>         > Log:<br>
>         > Add runtime flag 'symbolize_inline_frames' to disable<br>
>         symbolization of inlined frames done in llvm-symbolizer<br>
>         ><br>
><br>
>         > Modified:<br>
>         compiler-rt/trunk/test/sanitizer_common/TestCases/print-stack-trace.cc<br>
>         > URL:<br>
>         <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/TestCases/print-stack-trace.cc?rev=220582&r1=220581&r2=220582&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/sanitizer_common/TestCases/print-stack-trace.cc?rev=220582&r1=220581&r2=220582&view=diff</a><br>
>         ><br>
>         ==============================================================================<br>
>         > ---<br>
>         compiler-rt/trunk/test/sanitizer_common/TestCases/print-stack-trace.cc (original)<br>
>         > +++<br>
>         compiler-rt/trunk/test/sanitizer_common/TestCases/print-stack-trace.cc Fri Oct 24 13:34:43 2014<br>
>         > @@ -1,13 +1,14 @@<br>
>         >  // RUN: %clangxx -O0 %s -o %t && %run %t 2>&1 | FileCheck %<br>
>         s<br>
>         >  // RUN: %clangxx -O3 %s -o %t && %run %t 2>&1 | FileCheck %<br>
>         s<br>
>         > -//<br>
>         > +// RUN: %tool_options=symbolize_inline_frames=false %run %t<br>
>         2>&1 | FileCheck %s --check-prefix=NOINLINE<br>
>         > +<br>
><br>
>         Hi Alexey,<br>
><br>
>         This one fails for me, in a local build, on ppc64*.  The<br>
>         output from the<br>
>         run portion ( that gets passed into FileCheck ) looks the<br>
>         same,<br>
>         regardless of the ASAN_OPTIONS=symbolize_inline_frames=*<br>
>         value used.<br>
>         So I'd guess this is an architecture limitation for the<br>
>         moment, but<br>
>         thats not obvious from the other changes...   Am I missing<br>
>         something<br>
>         else in my environment here?  (should be all fresh build,<br>
>         etc).<br>
><br>
>         > /home/willschm/llvm_build/native/llvm.cmake/./bin/clang<br>
>         --driver-mode=g++ -gline-tables-only -fsanitize=address<br>
>         -O3 /home/willschm/llvm/projects/compiler-rt/test/sanitizer_common/TestCases/print-stack-trace.cc -o /home/willschm/llvm_build/native/llvm.cmake/projects/compiler-rt/test/sanitizer_common/asan/Output/print-stack-trace.cc.tmp<br>
><br>
>         ><br>
>         ASAN_OPTIONS=symbolize_inline_frames=true  /home/willschm/llvm_build/native/llvm.cmake/projects/compiler-rt/test/sanitizer_common/asan/Output/print-stack-trace.cc.tmp<br>
>             #0 0x100c07dc in<br>
>         __sanitizer_print_stack_trace /home/willschm/llvm/projects/compiler-rt/lib/asan/asan_stack.cc:23<br>
>             #1 0x100def70 in<br>
>         FooBarBaz /home/willschm/llvm/projects/compiler-rt/test/sanitizer_common/TestCases/print-stack-trace.cc:12:3<br>
>             #2 0x100def70 in<br>
>         main /home/willschm/llvm/projects/compiler-rt/test/sanitizer_common/TestCases/print-stack-trace.cc:16<br>
>             #3 0x1000003b4cfc in<br>
>         generic_start_main /build/buildd/eglibc-2.19/csu/../csu/libc-start.c:287<br>
><br>
>         Thanks,<br>
>         -Will<br>
><br>
><br>
>         >  // Not yet implemented for TSan.<br>
>         >  //<br>
>         <a href="https://code.google.com/p/address-sanitizer/issues/detail?id=243" target="_blank">https://code.google.com/p/address-sanitizer/issues/detail?id=243</a><br>
>         >  // XFAIL: tsan<br>
>         ><br>
>         >  #include <sanitizer/common_interface_defs.h><br>
>         ><br>
>         > -void FooBarBaz() {<br>
>         > +static inline void FooBarBaz() {<br>
>         >    __sanitizer_print_stack_trace();<br>
>         >  }<br>
>         ><br>
>         > @@ -16,5 +17,8 @@ int main() {<br>
>         >    return 0;<br>
>         >  }<br>
>         >  // CHECK: {{    #0 0x.* in __sanitizer_print_stack_trace}}<br>
>         > -// CHECK: {{    #1 0x.* in<br>
>         FooBarBaz(\(\))? .*print-stack-trace.cc:11}}<br>
>         > -// CHECK: {{    #2 0x.* in main.*print-stack-trace.cc:15}}<br>
>         > +// CHECK: {{    #1 0x.* in<br>
>         FooBarBaz(\(\))? .*print-stack-trace.cc:12}}<br>
>         > +// CHECK: {{    #2 0x.* in main.*print-stack-trace.cc:16}}<br>
>         > +<br>
>         > +// NOINLINE: #0 0x{{.*}} in __sanitizer_print_stack_trace<br>
>         > +// NOINLINE: #1 0x{{.*}} in<br>
>         main{{.*}}print-stack-trace.cc:12<br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
><br>
> --<br>
> Alexey Samsonov<br>
> <a href="mailto:vonosmas@gmail.com">vonosmas@gmail.com</a><br>
<br>
<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Alexey Samsonov<br><a href="mailto:vonosmas@gmail.com" target="_blank">vonosmas@gmail.com</a></div>
</div>