<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>