[compiler-rt] r240724 - [asan] Do not unset DYLD_ROOT_PATH before calling atos on Darwin

Anna Zaks ganna at apple.com
Thu Jun 25 16:36:22 PDT 2015


Author: zaks
Date: Thu Jun 25 18:36:21 2015
New Revision: 240724

URL: http://llvm.org/viewvc/llvm-project?rev=240724&view=rev
Log:
[asan] Do not unset DYLD_ROOT_PATH before calling atos on Darwin

We were unsetting DYLD_ROOT_PATH before calling atos on Darwin in order to
address it not working for symbolicating 32 bit binaries. (atos essentiall
tries to respawn as a 32 bit binary and it's disallowed to respawn if
DYLD_ROOT_PATH is set ... ) However, processes rely on having DYLD_ROOT_PATH
set under certain conditions, so this is not the right fix. In particular, this
always crashes when running ASanified process under the debugger in Xcode with
iOS simulator, which is a very important workflow for us to support.

This patch reverts the unsetting of the DYLD_ROOT_PATH. The correct fix to the
misbehavior on 32-bit binaries should happen inside atos.

http://reviews.llvm.org/D10722

Added:
    compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc
      - copied, changed from r240692, compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc
Modified:
    compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
    compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc

Modified: compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc?rev=240724&r1=240723&r2=240724&view=diff
==============================================================================
--- compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc (original)
+++ compiler-rt/trunk/lib/sanitizer_common/sanitizer_symbolizer_mac.cc Thu Jun 25 18:36:21 2015
@@ -53,9 +53,6 @@ class AtosSymbolizerProcess : public Sym
   }
 
   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) {

Copied: compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc (from r240692, compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc)
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc?p2=compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc&p1=compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc&r1=240692&r2=240724&rev=240724&view=diff
==============================================================================
--- compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc (original)
+++ compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer-dyld-root-path.cc Thu Jun 25 18:36:21 2015
@@ -1,11 +1,9 @@
-// Check that the `atos` symbolizer works.
-
-// 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
+//
+// Due to a bug in atos, this only works on x86_64.
+// REQUIRES: x86_64
 
 #include <stdlib.h>
 #include <string.h>

Modified: compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc?rev=240724&r1=240723&r2=240724&view=diff
==============================================================================
--- compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc (original)
+++ compiler-rt/trunk/test/asan/TestCases/Darwin/atos-symbolizer.cc Thu Jun 25 18:36:21 2015
@@ -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 <stdlib.h>
 #include <string.h>
 int main(int argc, char **argv) {





More information about the llvm-commits mailing list