[msan] Block reports from interceptors during _Unwind_Backtrace
Summary:
I'm hitting a big recursive report from:
uninit on strlen ->
__msan::PrintWarningWithOrigin() ->
__msan::GetStackTrace() ->
__sanitizer::StackTrace::SlowUnwindStack() ->
_Unwind_Backtrace() ->
... libgcc calls ->
uninit on strlen() ->
... repeats
Reviewers: eugenis
Differential Revision: http://llvm-reviews.chandlerc.com/D497
git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@176555 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/msan/msan.h b/lib/msan/msan.h
index 2150c83..fae1ad5 100644
--- a/lib/msan/msan.h
+++ b/lib/msan/msan.h
@@ -50,6 +50,11 @@
void ExitSymbolizer();
bool IsInSymbolizer();
+struct SymbolizerScope {
+ SymbolizerScope() { EnterSymbolizer(); }
+ ~SymbolizerScope() { ExitSymbolizer(); }
+};
+
void MsanDie();
void PrintWarning(uptr pc, uptr bp);
void PrintWarningWithOrigin(uptr pc, uptr bp, u32 origin);