Index: compiler-rt/trunk/lib/asan/asan_descriptions.cc =================================================================== --- compiler-rt/trunk/lib/asan/asan_descriptions.cc +++ compiler-rt/trunk/lib/asan/asan_descriptions.cc @@ -323,7 +323,8 @@ void GlobalAddressDescription::Print(const char *bug_type) const { for (int i = 0; i < size; i++) { DescribeAddressRelativeToGlobal(addr, access_size, globals[i]); - if (0 == internal_strcmp(bug_type, "initialization-order-fiasco") && + if (bug_type && + 0 == internal_strcmp(bug_type, "initialization-order-fiasco") && reg_sites[i]) { Printf(" registered at:\n"); StackDepotGet(reg_sites[i]).Print(); Index: compiler-rt/trunk/test/asan/TestCases/global-address.cpp =================================================================== --- compiler-rt/trunk/test/asan/TestCases/global-address.cpp +++ compiler-rt/trunk/test/asan/TestCases/global-address.cpp @@ -0,0 +1,12 @@ +// RUN: %clangxx_asan -o %t %s +// RUN: not %run %t 2>&1 | FileCheck %s +#include + +int g_i = 42; +int main() { + // CHECK: AddressSanitizer: attempting to call __sanitizer_get_allocated_size() for pointer which is not owned + // CHECK-NOT: ASAN:DEADLYSIGNAL + // CHECK: SUMMARY: AddressSanitizer: bad-__sanitizer_get_allocated_size + // CHECK-NOT: ASAN:DEADLYSIGNAL + return (int)__sanitizer_get_allocated_size(&g_i); +}