From 7f209a979c55a58e91946a2efd5f0b339ffe309c Mon Sep 17 00:00:00 2001 From: Iris Chang Date: Wed, 16 Jan 2019 11:17:15 +0800 Subject: Bionic malloc debug: add a new option "abort_on_error" This new option causes an abort after malloc debug detects an error. This allows vendors to get process coredumps to analyze memory for corruption. Bug: 123009873 Test: New test cases added for unit tests and config tests. Change-Id: I6b480af7f747d6a82f61e8bf3df204a5f7ba017f --- libc/malloc_debug/tests/malloc_debug_config_tests.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'libc/malloc_debug/tests/malloc_debug_config_tests.cpp') diff --git a/libc/malloc_debug/tests/malloc_debug_config_tests.cpp b/libc/malloc_debug/tests/malloc_debug_config_tests.cpp index a083b4f05..fb54ee54f 100644 --- a/libc/malloc_debug/tests/malloc_debug_config_tests.cpp +++ b/libc/malloc_debug/tests/malloc_debug_config_tests.cpp @@ -725,3 +725,21 @@ TEST_F(MallocDebugConfigTest, record_allocs_max_error) { "value must be <= 50000000: 100000000\n"); ASSERT_STREQ((log_msg + usage_string).c_str(), getFakeLogPrint().c_str()); } + +TEST_F(MallocDebugConfigTest, abort_on_error) { + ASSERT_TRUE(InitConfig("abort_on_error")) << getFakeLogPrint(); + ASSERT_EQ(ABORT_ON_ERROR, config->options()); + + ASSERT_STREQ("", getFakeLogBuf().c_str()); + ASSERT_STREQ("", getFakeLogPrint().c_str()); +} + +TEST_F(MallocDebugConfigTest, trigger_abort_fail) { + ASSERT_FALSE(InitConfig("abort_on_error=200")) << getFakeLogPrint(); + + ASSERT_STREQ("", getFakeLogBuf().c_str()); + std::string log_msg( + "6 malloc_debug malloc_testing: value set for option 'abort_on_error' " + "which does not take a value\n"); + ASSERT_STREQ((log_msg + usage_string).c_str(), getFakeLogPrint().c_str()); +} -- cgit v1.2.3