)]}'
{
  "commit": "db478a627482c73c52df9e3929fe7a39f03e4eeb",
  "tree": "15fcd3caeea9269e5e3eefb881ec25bade966bcb",
  "parents": [
    "3374d0cabb973ff2b73ad8cd909389bdeed18658"
  ],
  "author": {
    "name": "Christopher Ferris",
    "email": "cferris@google.com",
    "time": "Wed Feb 07 18:42:14 2018 -0800"
  },
  "committer": {
    "name": "Christopher Ferris",
    "email": "cferris@google.com",
    "time": "Tue Feb 13 13:37:30 2018 -0800"
  },
  "message": "Implement malloc hooks.\n\nUse the malloc debug framework to implement the malloc debug hooks\nsince it can introduce a performance issue.\n\nAlso, modify the bionic/tests/utils.h slightly to dump an error message\nwhen the exe failed.\n\nBug: 30561479\n\nTest: Ran malloc hook unit tests.\nTest: Ran malloc debug unit tests.\nTest: Enabled malloc hooks and ran bionic unit tests and verified no\nTest: unexpected failures.\nTest: Enabled malloc debug and malloc hooks and verified malloc debug wins.\nTest: Enabled malloc debug using env, property, and property with name\nTest: still works.\n\nChange-Id: Ib50046a0493c5c2050cf831befb812310bdcc249\n(cherry picked from commit d6a1dc23796696f73f483943534d4c5c4b312d39)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "940c418cd67e79a801bb74af8f57cbe5c5f6d90e",
      "old_mode": 33188,
      "old_path": "libc/bionic/malloc_common.cpp",
      "new_id": "1ea4ac1a3c0221de0a915410dc20068edf362abc",
      "new_mode": 33188,
      "new_path": "libc/bionic/malloc_common.cpp"
    },
    {
      "type": "modify",
      "old_id": "80b08f6fceecdf6bbcb0d2f9b11b4adb1527d58f",
      "old_mode": 33188,
      "old_path": "libc/include/malloc.h",
      "new_id": "3a678a94e7e8f35e0b40787c990ffa65e74218d9",
      "new_mode": 33188,
      "new_path": "libc/include/malloc.h"
    },
    {
      "type": "modify",
      "old_id": "a7977ebf7cd3f48cbca39f461541b0c35696d7d7",
      "old_mode": 33188,
      "old_path": "libc/libc.arm.map",
      "new_id": "4586fdacd14a2a124c110703aa009e2890156e5a",
      "new_mode": 33188,
      "new_path": "libc/libc.arm.map"
    },
    {
      "type": "modify",
      "old_id": "1cae22b567f464391628ea8b1d669ebdf551bb9e",
      "old_mode": 33188,
      "old_path": "libc/libc.arm64.map",
      "new_id": "75436ff0c6dae666f589619fa0c94bf815e068c4",
      "new_mode": 33188,
      "new_path": "libc/libc.arm64.map"
    },
    {
      "type": "modify",
      "old_id": "1188a853aa046c296614edbc22b92156cc272989",
      "old_mode": 33188,
      "old_path": "libc/libc.map.txt",
      "new_id": "a8a52c302a5824fab85e0ff0489cf372016aac8b",
      "new_mode": 33188,
      "new_path": "libc/libc.map.txt"
    },
    {
      "type": "modify",
      "old_id": "3d9507994bf717ef8802715122329f7b8cce3a5d",
      "old_mode": 33188,
      "old_path": "libc/libc.mips.map",
      "new_id": "584807e395cd7b86d6f55784b896c24504ff6048",
      "new_mode": 33188,
      "new_path": "libc/libc.mips.map"
    },
    {
      "type": "modify",
      "old_id": "1cae22b567f464391628ea8b1d669ebdf551bb9e",
      "old_mode": 33188,
      "old_path": "libc/libc.mips64.map",
      "new_id": "75436ff0c6dae666f589619fa0c94bf815e068c4",
      "new_mode": 33188,
      "new_path": "libc/libc.mips64.map"
    },
    {
      "type": "modify",
      "old_id": "bcb5feb0f210120f97ac273359b05745b3722712",
      "old_mode": 33188,
      "old_path": "libc/libc.x86.map",
      "new_id": "4498d6d211f2906d2519b5ea90a9fa024a2bc434",
      "new_mode": 33188,
      "new_path": "libc/libc.x86.map"
    },
    {
      "type": "modify",
      "old_id": "1cae22b567f464391628ea8b1d669ebdf551bb9e",
      "old_mode": 33188,
      "old_path": "libc/libc.x86_64.map",
      "new_id": "75436ff0c6dae666f589619fa0c94bf815e068c4",
      "new_mode": 33188,
      "new_path": "libc/libc.x86_64.map"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d4b5a2aa1c0f90f8b4bf0503c2f769667ffa2d7f",
      "new_mode": 33188,
      "new_path": "libc/malloc_hooks/Android.bp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "85b27695854d45c9a5b65dded4ea7c2d784fa6c5",
      "new_mode": 33188,
      "new_path": "libc/malloc_hooks/README.md"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2cf5b8c5c6bf107e63857cd4f8bb4de3ce523a23",
      "new_mode": 33188,
      "new_path": "libc/malloc_hooks/exported32.map"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5ebcf9ff7b3681a3919faffbba5c7b9cc93ecc0e",
      "new_mode": 33188,
      "new_path": "libc/malloc_hooks/exported64.map"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "662520c150b4f436f1476001235d30ff0a2ef178",
      "new_mode": 33188,
      "new_path": "libc/malloc_hooks/malloc_hooks.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0d23a6a8f6e611a4566d79c3587b01714aab88b7",
      "new_mode": 33188,
      "new_path": "libc/malloc_hooks/tests/malloc_hooks_tests.cpp"
    },
    {
      "type": "modify",
      "old_id": "3f4218e9fc35b36521c5f584cd63649c2581b2f1",
      "old_mode": 33188,
      "old_path": "tests/utils.h",
      "new_id": "f07bd587e25751924c61a0a6201e2c6dbfe1da25",
      "new_mode": 33188,
      "new_path": "tests/utils.h"
    }
  ]
}
