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