diff options
Diffstat (limited to 'lib/msan')
-rw-r--r-- | lib/msan/msan.cc | 5 | ||||
-rw-r--r-- | lib/msan/msan.h | 5 | ||||
-rw-r--r-- | lib/msan/msan_report.cc | 5 |
3 files changed, 9 insertions, 6 deletions
diff --git a/lib/msan/msan.cc b/lib/msan/msan.cc index ba2723433..cfa074182 100644 --- a/lib/msan/msan.cc +++ b/lib/msan/msan.cc @@ -153,8 +153,11 @@ static void GetCurrentStackBounds(uptr *stack_top, uptr *stack_bottom) { void GetStackTrace(StackTrace *stack, uptr max_s, uptr pc, uptr bp, bool fast) { - if (!fast) + if (!fast) { + // Block reports from our interceptors during _Unwind_Backtrace. + SymbolizerScope sym_scope; return stack->SlowUnwindStack(pc, max_s); + } uptr stack_top, stack_bottom; GetCurrentStackBounds(&stack_top, &stack_bottom); diff --git a/lib/msan/msan.h b/lib/msan/msan.h index 2150c83e8..fae1ad58a 100644 --- a/lib/msan/msan.h +++ b/lib/msan/msan.h @@ -50,6 +50,11 @@ void EnterSymbolizer(); 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); diff --git a/lib/msan/msan_report.cc b/lib/msan/msan_report.cc index 16b13f6c0..df6990f3c 100644 --- a/lib/msan/msan_report.cc +++ b/lib/msan/msan_report.cc @@ -44,11 +44,6 @@ class Decorator: private __sanitizer::AnsiColorDecorator { const char *End() { return Default(); } }; -struct SymbolizerScope { - SymbolizerScope() { EnterSymbolizer(); } - ~SymbolizerScope() { ExitSymbolizer(); } -}; - static void PrintStack(const uptr *trace, uptr size) { SymbolizerScope sym_scope; StackTrace::PrintStack(trace, size, true, flags()->strip_path_prefix, 0); |