Skip to content
This repository was archived by the owner on May 21, 2019. It is now read-only.

Commit 683a4f1

Browse files
[ASan] Suppress the deprecation warning from atos that breaks AtosSymbolizer on OSX 10.9
On OS X 10.9 /usr/bin/atos prints the following warning upon invocation: -- Warning: /usr/bin/atos is moving and will be removed from a future OS X release. It is now available in the Xcode developer tools to be invoked via: `xcrun atos` To silence this warning, pass the '-d' command-line flag to this tool. -- AtosSymbolizer treats the warning as the symbolization result for the first PC passed to the symbolizer. As a result, for each of the following PCs the file:line info for the previous PC is printed, e.g.: ==97926==ERROR: AddressSanitizer: attempting double-free on 0x60200000dfb0 in thread T0: ==97926==Using atos at user-specified path: /usr/bin/atos ==97926==Using dladdr symbolizer. #0 0x1007407e0 in -- (+0x427e0) #1 0x1006f6f25 in wrap_free asan_malloc_mac.cc:114 #2 0x7fff916e05fc in main atos-symbolizer.cc:17 #3 0x0 (<unknown module>) Unfortunately atos doesn't accept the -d switch on OSX versions other than 10.9, thus we have to check for the OSX version. git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@233180 91177308-0d34-0410-b5e6-96231b3b80d8
1 parent 652a27a commit 683a4f1

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

lib/sanitizer_common/sanitizer_symbolizer_mac.cc

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#if SANITIZER_MAC
1717

1818
#include "sanitizer_allocator_internal.h"
19+
#include "sanitizer_mac.h"
1920
#include "sanitizer_symbolizer_mac.h"
2021

2122
namespace __sanitizer {
@@ -57,7 +58,14 @@ class AtosSymbolizerProcess : public SymbolizerProcess {
5758

5859
char pid_str[16];
5960
internal_snprintf(pid_str, sizeof(pid_str), "%d", parent_pid_);
60-
execl(path_to_binary, path_to_binary, "-p", pid_str, (char *)0);
61+
if (GetMacosVersion() == MACOS_VERSION_MAVERICKS) {
62+
// On Mavericks atos prints a deprecation warning which we suppress by
63+
// passing -d. The warning isn't present on other OSX versions, even the
64+
// newer ones.
65+
execl(path_to_binary, path_to_binary, "-p", pid_str, "-d", (char *)0);
66+
} else {
67+
execl(path_to_binary, path_to_binary, "-p", pid_str, (char *)0);
68+
}
6169
}
6270

6371
pid_t parent_pid_;

0 commit comments

Comments
 (0)