Index: lib/sanitizer_common/sanitizer_symbolizer_mac.cc =================================================================== --- lib/sanitizer_common/sanitizer_symbolizer_mac.cc +++ lib/sanitizer_common/sanitizer_symbolizer_mac.cc @@ -53,9 +53,6 @@ } void ExecuteWithDefaultArgs(const char *path_to_binary) const override { - // The `atos` binary has some issues with DYLD_ROOT_PATH on i386. - unsetenv("DYLD_ROOT_PATH"); - char pid_str[16]; internal_snprintf(pid_str, sizeof(pid_str), "%d", parent_pid_); if (GetMacosVersion() == MACOS_VERSION_MAVERICKS) { Index: test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc =================================================================== --- /dev/null +++ test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc @@ -0,0 +1,26 @@ +// Check that when having a DYLD_ROOT_PATH set, the symbolizer still works. +// RUN: env DYLD_ROOT_PATH="/" ASAN_OPTIONS=$ASAN_OPTIONS:verbosity=2 ASAN_SYMBOLIZER_PATH=$(which atos) \ +// RUN: not %run %t 2>&1 | FileCheck %s +// +// Due to a bug in atos, this only works on x86_64. +// REQUIRES: x86_64 + +#include +#include +int main(int argc, char **argv) { + char *x = (char*)malloc(10 * sizeof(char)); + memset(x, 0, 10); + int res = x[argc]; + free(x); + free(x + argc - 1); // BOOM + // CHECK: AddressSanitizer: attempting double-free{{.*}}in thread T0 + // CHECK: Using atos at user-specified path: + // CHECK: #0 0x{{.*}} in {{.*}}free + // CHECK: #1 0x{{.*}} in main {{.*}}atos-symbolizer.cc:[[@LINE-4]] + // CHECK: freed by thread T0 here: + // CHECK: #0 0x{{.*}} in {{.*}}free + // CHECK: #1 0x{{.*}} in main {{.*}}atos-symbolizer.cc:[[@LINE-8]] + // CHECK: allocated by thread T0 here: + // CHECK: atos-symbolizer.cc:[[@LINE-13]] + return res; +} Index: test/asan/TestCases/Darwin/atos-symbolizer.cc =================================================================== --- test/asan/TestCases/Darwin/atos-symbolizer.cc +++ test/asan/TestCases/Darwin/atos-symbolizer.cc @@ -3,10 +3,6 @@ // RUN: %clangxx_asan -O0 %s -o %t // RUN: env ASAN_OPTIONS=$ASAN_OPTIONS:verbosity=2 ASAN_SYMBOLIZER_PATH=$(which atos) not %run %t 2>&1 | FileCheck %s -// Check that when having a DYLD_ROOT_PATH set, the symbolizer still works. -// RUN: env DYLD_ROOT_PATH="/" ASAN_OPTIONS=$ASAN_OPTIONS:verbosity=2 ASAN_SYMBOLIZER_PATH=$(which atos) \ -// RUN: not %run %t 2>&1 | FileCheck %s - #include #include int main(int argc, char **argv) {