summaryrefslogtreecommitdiff
path: root/lib/tsan/rtl/tsan_suppressions.h
diff options
context:
space:
mode:
authorJay Foad <jay.foad@gmail.com>2015-06-27 08:39:12 +0000
committerJay Foad <jay.foad@gmail.com>2015-06-27 08:39:12 +0000
commit1078594d5500eaa6b7bd82019cb2a4c8103dbb35 (patch)
treecfda496aa2c3d05d1d460a217183c9f5d67b3bc6 /lib/tsan/rtl/tsan_suppressions.h
parent43c73a07ba2e400a76b174cbe09daba329921de3 (diff)
downloadcompiler-rt-1078594d5500eaa6b7bd82019cb2a4c8103dbb35.tar.gz
[msan] Fix infinite recursion when _Unwind_Backtrace calls memcpy
Summary: On PPC64, half the msan tests fail with an infinite recursion through GetStackTrace like this: #0 __msan::GetStackTrace #1 __msan_memcpy #2 ?? () from /lib64/libgcc_s.so.1 #3 ?? () from /lib64/libgcc_s.so.1 #4 _Unwind_Backtrace #5 __sanitizer::BufferedStackTrace::SlowUnwindStack #6 __sanitizer::BufferedStackTrace::Unwind #7 __msan::GetStackTrace #8 __interceptor_calloc #9 _dl_allocate_tls #10 pthread_create@@GLIBC_2.17 #11 __interceptor_pthread_create #12 main The problem is that we call _Unwind_Backtrace to get a stack trace; but _Unwind_Backtrace calls memcpy, which we intercept and try to get another stack trace. This patch fixes it in __msan_memcpy by skipping the stack trace if IsInSymbolizer(). This works because GetStackTrace already creates a SymbolizerScope to "block reports from our interceptors during _Unwind_Backtrace". Reviewers: samsonov, wschmidt, eugenis Reviewed By: eugenis Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D10762 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@240878 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/tsan/rtl/tsan_suppressions.h')
0 files changed, 0 insertions, 0 deletions