From 97b474710225bc4853ab314c3d9ca812dc375525 Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Tue, 10 Jul 2018 14:45:24 -0700 Subject: Disable malloc debug intercepts when exiting. There is a hang when enabling leak_track since the dumping of the leak data can wind up doing an allocation. Add new system unit test to make sure this doesn't happen again. Bug: 111146059 Test: Test program that leaks does not hang forever. Test: Unit tests pass. Change-Id: Icf99be58ba5db98ee124a471b957a086045f5870 --- libc/malloc_debug/malloc_debug.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'libc/malloc_debug/malloc_debug.cpp') diff --git a/libc/malloc_debug/malloc_debug.cpp b/libc/malloc_debug/malloc_debug.cpp index 1e7086c7d..2e3a0a333 100644 --- a/libc/malloc_debug/malloc_debug.cpp +++ b/libc/malloc_debug/malloc_debug.cpp @@ -254,6 +254,9 @@ void debug_finalize() { return; } + // Turn off capturing allocations calls. + DebugDisableSet(true); + if (g_debug->config().options() & FREE_TRACK) { PointerData::VerifyAllFreed(); } @@ -263,15 +266,11 @@ void debug_finalize() { } if ((g_debug->config().options() & BACKTRACE) && g_debug->config().backtrace_dump_on_exit()) { - ScopedDisableDebugCalls disable; debug_dump_heap(android::base::StringPrintf("%s.%d.exit.txt", g_debug->config().backtrace_dump_prefix().c_str(), - getpid()) - .c_str()); + getpid()).c_str()); } - DebugDisableSet(true); - backtrace_shutdown(); delete g_debug; -- cgit v1.2.3