| Index: base/process/memory_unittest.cc
|
| diff --git a/base/process/memory_unittest.cc b/base/process/memory_unittest.cc
|
| index 048c09d38c1ed63fcf647046a0197ee2d1daf00b..21b5a5bf98f86b97d1d23a5eee2d36843d1e09cc 100644
|
| --- a/base/process/memory_unittest.cc
|
| +++ b/base/process/memory_unittest.cc
|
| @@ -21,6 +21,7 @@
|
| #endif
|
| #if defined(OS_MACOSX)
|
| #include <malloc/malloc.h>
|
| +#include "base/mac/mac_util.h"
|
| #include "base/process/memory_unittest_mac.h"
|
| #endif
|
| #if defined(OS_LINUX)
|
| @@ -108,6 +109,14 @@ TEST(ProcessMemoryTest, EnableLFH) {
|
| // The following code tests the system implementation of malloc() thus no need
|
| // to test it under AddressSanitizer.
|
| TEST(ProcessMemoryTest, MacMallocFailureDoesNotTerminate) {
|
| +#if ARCH_CPU_32_BITS
|
| + // The Mavericks malloc library changed in a way which breaks the tricks used
|
| + // to implement EnableTerminationOnOutOfMemory() with UncheckedMalloc() under
|
| + // 32-bit. Under 64-bit the oom_killer code handles this.
|
| + if (base::mac::IsOSMavericksOrLater())
|
| + return;
|
| +#endif
|
| +
|
| // Test that ENOMEM doesn't crash via CrMallocErrorBreak two ways: the exit
|
| // code and lack of the error string. The number of bytes is one less than
|
| // MALLOC_ABSOLUTE_MAX_SIZE, more than which the system early-returns NULL and
|
| @@ -397,6 +406,13 @@ class OutOfMemoryHandledTest : public OutOfMemoryTest {
|
| // under sanitizer tools.
|
| #if !defined(MEMORY_TOOL_REPLACES_ALLOCATOR)
|
| TEST_F(OutOfMemoryHandledTest, UncheckedMalloc) {
|
| +#if defined(OS_MACOSX) && ARCH_CPU_32_BITS
|
| + // The Mavericks malloc library changed in a way which breaks the tricks used
|
| + // to implement EnableTerminationOnOutOfMemory() with UncheckedMalloc() under
|
| + // 32-bit. The 64-bit malloc library works as desired without tricks.
|
| + if (base::mac::IsOSMavericksOrLater())
|
| + return;
|
| +#endif
|
| EXPECT_TRUE(base::UncheckedMalloc(kSafeMallocSize, &value_));
|
| EXPECT_TRUE(value_ != NULL);
|
| free(value_);
|
| @@ -406,6 +422,13 @@ TEST_F(OutOfMemoryHandledTest, UncheckedMalloc) {
|
| }
|
|
|
| TEST_F(OutOfMemoryHandledTest, UncheckedCalloc) {
|
| +#if defined(OS_MACOSX) && ARCH_CPU_32_BITS
|
| + // The Mavericks malloc library changed in a way which breaks the tricks used
|
| + // to implement EnableTerminationOnOutOfMemory() with UncheckedCalloc() under
|
| + // 32-bit. The 64-bit malloc library works as desired without tricks.
|
| + if (base::mac::IsOSMavericksOrLater())
|
| + return;
|
| +#endif
|
| EXPECT_TRUE(base::UncheckedCalloc(1, kSafeMallocSize, &value_));
|
| EXPECT_TRUE(value_ != NULL);
|
| const char* bytes = static_cast<const char*>(value_);
|
|
|