From 255958391dd53620e9f991f8449703ba3ac1d5d2 Mon Sep 17 00:00:00 2001 From: Timur Iskhodzhanov Date: Fri, 8 Aug 2014 13:25:55 +0000 Subject: [PATCH] [ASan/Win] Print out a big warning and continue without checking for success if SymInitialize() fails llvm-svn: 215203 --- .../lib/sanitizer_common/sanitizer_symbolizer_win.cc | 9 +++++++-- .../asan/TestCases/Windows/report_after_syminitialize.cc | 5 +++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc index 4f203a4374bc..e8cf0a8307e7 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_win.cc @@ -40,8 +40,13 @@ class WinSymbolizer : public Symbolizer { // Anyways, we have to reconfigure stuff to make sure that SymInitialize // has all the appropriate options set. // Cross our fingers and reinitialize DbgHelp. - CHECK(SymCleanup(GetCurrentProcess())); - CHECK(TrySymInitialize()); + Report("*** WARNING: Failed to initialize DbgHelp! ***\n"); + Report("*** Most likely this means that the app is already ***\n"); + Report("*** using DbgHelp, possibly with incompatible flags. ***\n"); + Report("*** Due to technical reasons, symbolization might crash ***\n"); + Report("*** or produce wrong results. ***\n"); + SymCleanup(GetCurrentProcess()); + TrySymInitialize(); } initialized_ = true; } diff --git a/compiler-rt/test/asan/TestCases/Windows/report_after_syminitialize.cc b/compiler-rt/test/asan/TestCases/Windows/report_after_syminitialize.cc index 8a56bf087310..faf5e35db5f5 100644 --- a/compiler-rt/test/asan/TestCases/Windows/report_after_syminitialize.cc +++ b/compiler-rt/test/asan/TestCases/Windows/report_after_syminitialize.cc @@ -11,8 +11,9 @@ int main() { if (!SymInitialize(GetCurrentProcess(), 0, FALSE)) return 42; - *(int*)0 = 42; + *(volatile int*)0 = 42; // CHECK: ERROR: AddressSanitizer: access-violation on unknown address - // CHECK-NEXT: {{#0 0x.* in main.*report_after_syminitialize.cc:}}[[@LINE-2]] + // CHECK-NEXT: {{WARNING: .*DbgHelp}} + // CHECK: {{#0 0x.* in main.*report_after_syminitialize.cc:}}[[@LINE-3]] // CHECK: AddressSanitizer can not provide additional info. }