Index: base/tools_sanity_unittest.cc |
diff --git a/base/tools_sanity_unittest.cc b/base/tools_sanity_unittest.cc |
index b1da3e1aa59fc79a4fe5391d208614bf634deda0..3787a98d275ebf4a60953e04776c8382ac73b45c 100644 |
--- a/base/tools_sanity_unittest.cc |
+++ b/base/tools_sanity_unittest.cc |
@@ -100,24 +100,25 @@ TEST(ToolsSanityTest, MemoryLeak) { |
// error report mechanism is different than with Asan so these tests will fail. |
#define MAYBE_AccessesToNewMemory DISABLED_AccessesToNewMemory |
#define MAYBE_AccessesToMallocMemory DISABLED_AccessesToMallocMemory |
+#define MAYBE_SingleElementDeletedWithBraces \ |
+ DISABLED_SingleElementDeletedWithBraces |
+#define MAYBE_ArrayDeletedWithoutBraces DISABLED_ArrayDeletedWithoutBraces |
#else |
#define MAYBE_AccessesToNewMemory AccessesToNewMemory |
#define MAYBE_AccessesToMallocMemory AccessesToMallocMemory |
+ |
+#if defined(ADDRESS_SANITIZER) && !defined(OS_MACOSX) |
+// AddressSanitizer for OSX doesn't support alloc-dealloc mismatch checks. |
#define MAYBE_ArrayDeletedWithoutBraces ArrayDeletedWithoutBraces |
#define MAYBE_SingleElementDeletedWithBraces SingleElementDeletedWithBraces |
-#endif |
- |
-// The following tests pass with Clang r170392, but not r172454, which |
-// makes AddressSanitizer detect errors in them. We disable these tests under |
-// AddressSanitizer until we fully switch to Clang r172454. After that the |
-// tests should be put back under the (defined(OS_IOS) || defined(OS_WIN)) |
-// clause above. |
-// See also http://crbug.com/172614. |
-#if defined(ADDRESS_SANITIZER) || defined(SYZYASAN) |
+#else |
+#define MAYBE_ArrayDeletedWithoutBraces DISABLED_ArrayDeletedWithoutBraces |
#define MAYBE_SingleElementDeletedWithBraces \ |
DISABLED_SingleElementDeletedWithBraces |
-#define MAYBE_ArrayDeletedWithoutBraces DISABLED_ArrayDeletedWithoutBraces |
#endif |
+ |
+#endif |
+ |
TEST(ToolsSanityTest, MAYBE_AccessesToNewMemory) { |
char *foo = new char[10]; |
MakeSomeErrors(foo, 10); |
@@ -144,7 +145,12 @@ TEST(ToolsSanityTest, MAYBE_ArrayDeletedWithoutBraces) { |
// Without the |volatile|, clang optimizes away the next two lines. |
int* volatile foo = new int[10]; |
- delete foo; |
+ HARMFUL_ACCESS(delete foo, "alloc-dealloc-mismatch"); |
+#if defined(ADDRESS_SANITIZER) |
+ // Under ASan the crash happens in the process spawned by HARMFUL_ACCESS, |
+ // need to free the memory in the parent. |
+ delete [] foo; |
+#endif |
} |
TEST(ToolsSanityTest, MAYBE_SingleElementDeletedWithBraces) { |
@@ -158,7 +164,12 @@ TEST(ToolsSanityTest, MAYBE_SingleElementDeletedWithBraces) { |
// Without the |volatile|, clang optimizes away the next two lines. |
int* volatile foo = new int; |
(void) foo; |
- delete [] foo; |
+ HARMFUL_ACCESS(delete [] foo, "alloc-dealloc-mismatch"); |
+#if defined(ADDRESS_SANITIZER) |
+ // Under ASan the crash happens in the child process, need to free the memory |
+ // in the parent. |
+ delete foo; |
+#endif |
} |
#if defined(ADDRESS_SANITIZER) || defined(SYZYASAN) |