Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1076)

Side by Side Diff: base/process_util_unittest.cc

Issue 10908245: unchecked_malloc() for Skia on OSX. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Put EBADF/syslog commentary back. Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « base/process_util_mac.mm ('k') | skia/ext/SkMemory_new_handler.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #define _CRT_SECURE_NO_WARNINGS 5 #define _CRT_SECURE_NO_WARNINGS
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/alias.h" 10 #include "base/debug/alias.h"
(...skipping 1074 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 ASSERT_DEATH({ 1085 ASSERT_DEATH({
1086 SetUpInDeathAssert(); 1086 SetUpInDeathAssert();
1087 value_ = g_try_malloc(test_size_); 1087 value_ = g_try_malloc(test_size_);
1088 }, ""); 1088 }, "");
1089 } 1089 }
1090 #endif // OS_LINUX 1090 #endif // OS_LINUX
1091 1091
1092 // Android doesn't implement posix_memalign(). 1092 // Android doesn't implement posix_memalign().
1093 #if defined(OS_POSIX) && !defined(OS_ANDROID) 1093 #if defined(OS_POSIX) && !defined(OS_ANDROID)
1094 TEST_F(OutOfMemoryDeathTest, Posix_memalign) { 1094 TEST_F(OutOfMemoryDeathTest, Posix_memalign) {
1095 typedef int (*memalign_t)(void **, size_t, size_t); 1095 // Grab the return value of posix_memalign to silence a compiler warning
1096 #if defined(OS_MACOSX) 1096 // about unused return values. We don't actually care about the return
1097 // posix_memalign only exists on >= 10.6. Use dlsym to grab it at runtime 1097 // value, since we're asserting death.
1098 // because it may not be present in the SDK used for compilation. 1098 ASSERT_DEATH({
1099 memalign_t memalign = 1099 SetUpInDeathAssert();
1100 reinterpret_cast<memalign_t>(dlsym(RTLD_DEFAULT, "posix_memalign")); 1100 EXPECT_EQ(ENOMEM, posix_memalign(&value_, 8, test_size_));
1101 #else 1101 }, "");
1102 memalign_t memalign = posix_memalign;
1103 #endif // defined(OS_MACOSX)
1104 if (memalign) {
1105 // Grab the return value of posix_memalign to silence a compiler warning
1106 // about unused return values. We don't actually care about the return
1107 // value, since we're asserting death.
1108 ASSERT_DEATH({
1109 SetUpInDeathAssert();
1110 EXPECT_EQ(ENOMEM, memalign(&value_, 8, test_size_));
1111 }, "");
1112 }
1113 } 1102 }
1114 #endif // defined(OS_POSIX) && !defined(OS_ANDROID) 1103 #endif // defined(OS_POSIX) && !defined(OS_ANDROID)
1115 1104
1116 #if defined(OS_MACOSX) 1105 #if defined(OS_MACOSX)
1117 1106
1118 // Purgeable zone tests (if it exists) 1107 // Purgeable zone tests
1119 1108
1120 TEST_F(OutOfMemoryDeathTest, MallocPurgeable) { 1109 TEST_F(OutOfMemoryDeathTest, MallocPurgeable) {
1121 malloc_zone_t* zone = base::GetPurgeableZone(); 1110 malloc_zone_t* zone = malloc_default_purgeable_zone();
1122 if (zone) 1111 ASSERT_DEATH({
1123 ASSERT_DEATH({ 1112 SetUpInDeathAssert();
1124 SetUpInDeathAssert(); 1113 value_ = malloc_zone_malloc(zone, test_size_);
1125 value_ = malloc_zone_malloc(zone, test_size_); 1114 }, "");
1126 }, "");
1127 } 1115 }
1128 1116
1129 TEST_F(OutOfMemoryDeathTest, ReallocPurgeable) { 1117 TEST_F(OutOfMemoryDeathTest, ReallocPurgeable) {
1130 malloc_zone_t* zone = base::GetPurgeableZone(); 1118 malloc_zone_t* zone = malloc_default_purgeable_zone();
1131 if (zone) 1119 ASSERT_DEATH({
1132 ASSERT_DEATH({ 1120 SetUpInDeathAssert();
1133 SetUpInDeathAssert(); 1121 value_ = malloc_zone_realloc(zone, NULL, test_size_);
1134 value_ = malloc_zone_realloc(zone, NULL, test_size_); 1122 }, "");
1135 }, "");
1136 } 1123 }
1137 1124
1138 TEST_F(OutOfMemoryDeathTest, CallocPurgeable) { 1125 TEST_F(OutOfMemoryDeathTest, CallocPurgeable) {
1139 malloc_zone_t* zone = base::GetPurgeableZone(); 1126 malloc_zone_t* zone = malloc_default_purgeable_zone();
1140 if (zone) 1127 ASSERT_DEATH({
1141 ASSERT_DEATH({ 1128 SetUpInDeathAssert();
1142 SetUpInDeathAssert(); 1129 value_ = malloc_zone_calloc(zone, 1024, test_size_ / 1024L);
1143 value_ = malloc_zone_calloc(zone, 1024, test_size_ / 1024L); 1130 }, "");
1144 }, "");
1145 } 1131 }
1146 1132
1147 TEST_F(OutOfMemoryDeathTest, VallocPurgeable) { 1133 TEST_F(OutOfMemoryDeathTest, VallocPurgeable) {
1148 malloc_zone_t* zone = base::GetPurgeableZone(); 1134 malloc_zone_t* zone = malloc_default_purgeable_zone();
1149 if (zone) 1135 ASSERT_DEATH({
1150 ASSERT_DEATH({ 1136 SetUpInDeathAssert();
1151 SetUpInDeathAssert(); 1137 value_ = malloc_zone_valloc(zone, test_size_);
1152 value_ = malloc_zone_valloc(zone, test_size_); 1138 }, "");
1153 }, "");
1154 } 1139 }
1155 1140
1156 TEST_F(OutOfMemoryDeathTest, PosixMemalignPurgeable) { 1141 TEST_F(OutOfMemoryDeathTest, PosixMemalignPurgeable) {
1157 malloc_zone_t* zone = base::GetPurgeableZone(); 1142 malloc_zone_t* zone = malloc_default_purgeable_zone();
1158 1143 ASSERT_DEATH({
1159 typedef void* (*zone_memalign_t)(malloc_zone_t*, size_t, size_t); 1144 SetUpInDeathAssert();
1160 // malloc_zone_memalign only exists on >= 10.6. Use dlsym to grab it at 1145 value_ = malloc_zone_memalign(zone, 8, test_size_);
1161 // runtime because it may not be present in the SDK used for compilation. 1146 }, "");
1162 zone_memalign_t zone_memalign =
1163 reinterpret_cast<zone_memalign_t>(
1164 dlsym(RTLD_DEFAULT, "malloc_zone_memalign"));
1165
1166 if (zone && zone_memalign) {
1167 ASSERT_DEATH({
1168 SetUpInDeathAssert();
1169 value_ = zone_memalign(zone, 8, test_size_);
1170 }, "");
1171 }
1172 } 1147 }
1173 1148
1174 // Since these allocation functions take a signed size, it's possible that 1149 // Since these allocation functions take a signed size, it's possible that
1175 // calling them just once won't be enough to exhaust memory. In the 32-bit 1150 // calling them just once won't be enough to exhaust memory. In the 32-bit
1176 // environment, it's likely that these allocation attempts will fail because 1151 // environment, it's likely that these allocation attempts will fail because
1177 // not enough contiguous address space is available. In the 64-bit environment, 1152 // not enough contiguous address space is available. In the 64-bit environment,
1178 // it's likely that they'll fail because they would require a preposterous 1153 // it's likely that they'll fail because they would require a preposterous
1179 // amount of (virtual) memory. 1154 // amount of (virtual) memory.
1180 1155
1181 TEST_F(OutOfMemoryDeathTest, CFAllocatorSystemDefault) { 1156 TEST_F(OutOfMemoryDeathTest, CFAllocatorSystemDefault) {
(...skipping 30 matching lines...) Expand all
1212 SetUpInDeathAssert(); 1187 SetUpInDeathAssert();
1213 while ((value_ = base::AllocatePsychoticallyBigObjCObject())) {} 1188 while ((value_ = base::AllocatePsychoticallyBigObjCObject())) {}
1214 }, ""); 1189 }, "");
1215 } 1190 }
1216 1191
1217 #endif // !ARCH_CPU_64_BITS 1192 #endif // !ARCH_CPU_64_BITS
1218 #endif // OS_MACOSX 1193 #endif // OS_MACOSX
1219 1194
1220 #endif // !defined(OS_ANDROID) && !defined(OS_OPENBSD) && 1195 #endif // !defined(OS_ANDROID) && !defined(OS_OPENBSD) &&
1221 // !defined(OS_WIN) && !defined(ADDRESS_SANITIZER) 1196 // !defined(OS_WIN) && !defined(ADDRESS_SANITIZER)
OLDNEW
« no previous file with comments | « base/process_util_mac.mm ('k') | skia/ext/SkMemory_new_handler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698