OSDN Git Service

Add support for scudo native allocator.
authorChristopher Ferris <cferris@google.com>
Wed, 18 Sep 2019 17:31:40 +0000 (10:31 -0700)
committerChristopher Ferris <cferris@google.com>
Wed, 18 Sep 2019 23:41:07 +0000 (16:41 -0700)
Bug: 137795072

Test: Unit tests pass.
Test: Ran memory_replay and verified that RSS is non-zero.
Change-Id: I266b9d4e4d1c1a3011acc47f9891a2b65979d870

memory_replay/NativeInfo.cpp
memory_replay/tests/NativeInfoTest.cpp

index 8d0e494..ec131dd 100644 (file)
@@ -75,7 +75,8 @@ void NativeGetInfo(int smaps_fd, size_t* rss_bytes, size_t* va_bytes) {
       if (sscanf(&buf[buf_start], "%" SCNxPTR "-%" SCNxPTR " %*4s %*x %*x:%*x %*d %n", &start, &end,
                  &name_pos) == 2) {
         char* map_name = &buf[buf_start + name_pos];
-        if (strcmp(map_name, "[anon:libc_malloc]") == 0 || strcmp(map_name, "[heap]") == 0) {
+        if (strcmp(map_name, "[anon:libc_malloc]") == 0 || strcmp(map_name, "[heap]") == 0 ||
+            strncmp(map_name, "[anon:scudo:", 12) == 0) {
           total_va_bytes += end - start;
           native_map = true;
         } else {
index e09f065..845ec04 100644 (file)
@@ -253,7 +253,24 @@ TEST_F(NativeInfoTest, mix_heap_anon) {
       "KernelPageSize:        4 kB\n"
       "MMUPageSize:           4 kB\n"
       "Locked:                0 kB\n"
-      "Name:\n";
+      "Name:\n"
+      "b6f4e000-b6f6f000 rw-p 00000000 00:00 0          [anon:scudo:test]\n"
+      "Size:                  8 kB\n"
+      "Rss:                   52 kB\n"
+      "Pss:                   0 kB\n"
+      "Shared_Clean:          0 kB\n"
+      "Shared_Dirty:          0 kB\n"
+      "Private_Clean:         0 kB\n"
+      "Private_Dirty:         0 kB\n"
+      "Referenced:            0 kB\n"
+      "Anonymous:             0 kB\n"
+      "AnonHugePages:         0 kB\n"
+      "Swap:                  0 kB\n"
+      "KernelPageSize:        4 kB\n"
+      "MMUPageSize:           4 kB\n"
+      "Locked:                0 kB\n"
+      "Name:           [anon:scudo:test]\n";
+
   ASSERT_TRUE(TEMP_FAILURE_RETRY(
       write(tmp_file_->fd, smaps_data.c_str(), smaps_data.size())) != -1);
   ASSERT_TRUE(lseek(tmp_file_->fd, 0, SEEK_SET) != off_t(-1));
@@ -261,6 +278,6 @@ TEST_F(NativeInfoTest, mix_heap_anon) {
   size_t rss_bytes = 1;
   size_t va_bytes = 1;
   NativeGetInfo(tmp_file_->fd, &rss_bytes, &va_bytes);
-  ASSERT_EQ(73728U, rss_bytes);
-  ASSERT_EQ(12288U, va_bytes);
+  EXPECT_EQ(126976U, rss_bytes);
+  EXPECT_EQ(147456U, va_bytes);
 }