Chromium Code Reviews| Index: base/tools_sanity_unittest.cc |
| diff --git a/base/tools_sanity_unittest.cc b/base/tools_sanity_unittest.cc |
| index b1da3e1aa59fc79a4fe5391d208614bf634deda0..b2ab774cbd005f94241152dc165b04f1291e35d1 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(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 child process, need to free the memory |
|
Nico
2014/05/13 11:27:26
Which child process? The one spawned by the dead t
Alexander Potapenko
2014/05/13 11:37:37
Done.
|
| + // in the parent. |
| + delete[] foo; |
|
Nico
2014/05/13 11:27:26
nit: I think we usually format this as `delete []
Alexander Potapenko
2014/05/13 11:37:37
A quick codesearch gives 669 "delete["s vs. 507 "d
|
| +#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) |