diff options
author | glider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-14 11:50:37 +0000 |
---|---|---|
committer | glider@chromium.org <glider@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-05-14 11:50:37 +0000 |
commit | 2d4e013100d9cef8077e93d028704b924e0e215f (patch) | |
tree | c604ef4259e8de5733bc90084664e4eaea4b05b5 /base | |
parent | 77724b60ca440b1e4376ca0a37ca9de520a5821b (diff) | |
download | chromium_src-2d4e013100d9cef8077e93d028704b924e0e215f.zip chromium_src-2d4e013100d9cef8077e93d028704b924e0e215f.tar.gz chromium_src-2d4e013100d9cef8077e93d028704b924e0e215f.tar.bz2 |
Reland https://codereview.chromium.org/276493002: Enable ToolsSanityTest.SingleElementDeletedWithBraces and ToolsSanityTest.ArrayDeletedWithoutBraces under AddressSanitizer on Linux.
Also make sure the tests aren't disabled under non-ASan on OSX.
BUG=172614
TBR=thakis@chromium.org
Review URL: https://codereview.chromium.org/282843003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@270383 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/tools_sanity_unittest.cc | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/base/tools_sanity_unittest.cc b/base/tools_sanity_unittest.cc index b1da3e1..3787a98 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) |