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

Side by Side Diff: base/process_util_unittest.cc

Issue 7670025: [Mac] Implement base::EnableTerminationOnHeapCorruption() by overriding malloc_error_break(). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Patch mach_override Created 9 years, 4 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
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/eintr_wrapper.h" 10 #include "base/eintr_wrapper.h"
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 ASSERT_TRUE(OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &token)); 390 ASSERT_TRUE(OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &token));
391 std::wstring cmdline = 391 std::wstring cmdline =
392 this->MakeCmdLine("SimpleChildProcess", false).GetCommandLineString(); 392 this->MakeCmdLine("SimpleChildProcess", false).GetCommandLineString();
393 base::LaunchOptions options; 393 base::LaunchOptions options;
394 options.as_user = token; 394 options.as_user = token;
395 EXPECT_TRUE(base::LaunchProcess(cmdline, options, NULL)); 395 EXPECT_TRUE(base::LaunchProcess(cmdline, options, NULL));
396 } 396 }
397 397
398 #endif // defined(OS_WIN) 398 #endif // defined(OS_WIN)
399 399
400 #if defined(OS_MACOSX)
401
402 TEST_F(ProcessUtilTest, MacTerminateOnHeapCorruption) {
403 // Note that base::EnableTerminationOnHeapCorruption() is called as part of
404 // test suite setup and does not need to be done again, else mach_override
405 // will fail.
406
407 char buf[3];
408 ASSERT_DEATH(free(buf), "being freed.*"
409 "\\*\\*\\* set a breakpoint in malloc_error_break to debug.*"
410 "Terminating process due to a potential for future heap corruption");
411 }
412
413 #endif // defined(OS_MACOSX)
414
400 #if defined(OS_POSIX) 415 #if defined(OS_POSIX)
401 416
402 namespace { 417 namespace {
403 418
404 // Returns the maximum number of files that a process can have open. 419 // Returns the maximum number of files that a process can have open.
405 // Returns 0 on error. 420 // Returns 0 on error.
406 int GetMaxFilesOpenInProcess() { 421 int GetMaxFilesOpenInProcess() {
407 struct rlimit rlim; 422 struct rlimit rlim;
408 if (getrlimit(RLIMIT_NOFILE, &rlim) != 0) { 423 if (getrlimit(RLIMIT_NOFILE, &rlim) != 0) {
409 return 0; 424 return 0;
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after
1001 ASSERT_DEATH({ 1016 ASSERT_DEATH({
1002 SetUpInDeathAssert(); 1017 SetUpInDeathAssert();
1003 while ((value_ = base::AllocatePsychoticallyBigObjCObject())) {} 1018 while ((value_ = base::AllocatePsychoticallyBigObjCObject())) {}
1004 }, ""); 1019 }, "");
1005 } 1020 }
1006 1021
1007 #endif // !ARCH_CPU_64_BITS 1022 #endif // !ARCH_CPU_64_BITS
1008 #endif // OS_MACOSX 1023 #endif // OS_MACOSX
1009 1024
1010 #endif // !defined(OS_WIN) 1025 #endif // !defined(OS_WIN)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698