From 5db009286d279665c4d168fd2efe56ac943444eb Mon Sep 17 00:00:00 2001 From: Christopher Ferris Date: Wed, 18 Sep 2019 10:30:33 -0700 Subject: [PATCH] Add support for scudo native allocator. Bug: 137795072 Test: All unit tests pass when using scudo or jemalloc. Change-Id: I20c71811d9e43663c495a1e51988acfef9fc8584 --- libmeminfo/libmeminfo_test.cpp | 9 +++++++-- libmemunreachable/MemUnreachable.cpp | 4 +++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/libmeminfo/libmeminfo_test.cpp b/libmeminfo/libmeminfo_test.cpp index 4c2be9186..cf5341d14 100644 --- a/libmeminfo/libmeminfo_test.cpp +++ b/libmeminfo/libmeminfo_test.cpp @@ -31,6 +31,7 @@ #include #include #include +#include using namespace std; using namespace android::meminfo; @@ -334,7 +335,9 @@ TEST(ProcMemInfo, ForEachVmaFromFileTest) { // Check for names EXPECT_EQ(vmas[0].name, "[anon:dalvik-zygote-jit-code-cache]"); EXPECT_EQ(vmas[1].name, "/system/framework/x86_64/boot-framework.art"); - EXPECT_EQ(vmas[2].name, "[anon:libc_malloc]"); + EXPECT_TRUE(vmas[2].name == "[anon:libc_malloc]" || + android::base::StartsWith(vmas[2].name, "[anon:scudo:")) + << "Unknown map name " << vmas[2].name; EXPECT_EQ(vmas[3].name, "/system/priv-app/SettingsProvider/oat/x86_64/SettingsProvider.odex"); EXPECT_EQ(vmas[4].name, "/system/lib64/libhwui.so"); EXPECT_EQ(vmas[5].name, "[vsyscall]"); @@ -432,7 +435,9 @@ TEST(ProcMemInfo, SmapsTest) { // Check for names EXPECT_EQ(vmas[0].name, "[anon:dalvik-zygote-jit-code-cache]"); EXPECT_EQ(vmas[1].name, "/system/framework/x86_64/boot-framework.art"); - EXPECT_EQ(vmas[2].name, "[anon:libc_malloc]"); + EXPECT_TRUE(vmas[2].name == "[anon:libc_malloc]" || + android::base::StartsWith(vmas[2].name, "[anon:scudo:")) + << "Unknown map name " << vmas[2].name; EXPECT_EQ(vmas[3].name, "/system/priv-app/SettingsProvider/oat/x86_64/SettingsProvider.odex"); EXPECT_EQ(vmas[4].name, "/system/lib64/libhwui.so"); EXPECT_EQ(vmas[5].name, "[vsyscall]"); diff --git a/libmemunreachable/MemUnreachable.cpp b/libmemunreachable/MemUnreachable.cpp index ce937fd81..c4add19ce 100644 --- a/libmemunreachable/MemUnreachable.cpp +++ b/libmemunreachable/MemUnreachable.cpp @@ -25,6 +25,7 @@ #include #include +#include #include #include "Allocator.h" @@ -250,7 +251,8 @@ bool MemUnreachable::ClassifyMappings(const allocator::vector& mappings } else if (mapping_name == current_lib) { // .rodata or .data section globals_mappings.emplace_back(*it); - } else if (mapping_name == "[anon:libc_malloc]") { + } else if (mapping_name == "[anon:libc_malloc]" || + android::base::StartsWith(mapping_name, "[anon:scudo:")) { // named malloc mapping heap_mappings.emplace_back(*it); } else if (has_prefix(mapping_name, "[anon:dalvik-")) {