)]}'
{
  "log": [
    {
      "commit": "3ff4245c70a0cd340a5231f7f1f7d98608a47b53",
      "tree": "ece6fabb44f7340285c65dc73f2a83b198d92ea8",
      "parents": [
        "8fe1fcd804add7a79a4f7dca44a9b624d031b99b",
        "3b21ada5f1bd98b337143ee5d5baba7373bfdbb1"
      ],
      "author": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Jan 24 00:26:32 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 24 00:26:32 2020 +0000"
      },
      "message": "Merge \"Add tagged pointers to bionic.\""
    },
    {
      "commit": "3b21ada5f1bd98b337143ee5d5baba7373bfdbb1",
      "tree": "7e5bf3c1ae9008eccc61f7f6eefef9b0039af1b5",
      "parents": [
        "73e9f242ed07631798433df4e35f5f73443cb9f9"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Tue Jan 07 15:47:47 2020 -0800"
      },
      "committer": {
        "name": "Evgenii Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Jan 23 10:37:24 2020 -0800"
      },
      "message": "Add tagged pointers to bionic.\n\nThis patch introduces tagged pointers to bionic. We add a static tag to\nall pointers on arm64 compatible platforms (needs requisite\ntop-byte-ignore hardware feature and relevant kernel patches).\n\nWe dynamically detect TBI-compatible devices (a device with the TBI feature and\nkernel support) at process start time, and insert an implementation-dependent\ntag into the top byte of the pointer for all heap allocations. We then check\nthat the tag has not been truncated when deallocating the memory.\n\nIf an application incorrectly writes to the top byte of the pointer, we\nterminate the process at time of detection. This will allow MTE-incompatible\napplications to be caught early.\n\nBug: 135754954\nBug: 147147490\n\nTest: cd bionic \u0026\u0026 atest .\nChange-Id: Ie424325ba1e3c4443040ac265aeaa28d9e405d28\n"
    },
    {
      "commit": "00a131f387e7cde76c30bd3fbbd81ab5d86adf49",
      "tree": "f6a3a587f5282fa417b3f08a87741bdbc17db71f",
      "parents": [
        "96fbba1ea07c1496c3fbde86b19b935badc74084"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 22 23:23:17 2020 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jan 22 23:29:43 2020 -0800"
      },
      "message": "Update for change MapInfo constructor.\n\nBug: 148075852\n\nTest: Ran unit tests.\nChange-Id: I8326d8db9887e2bba26d6d94786a72c49edc5d21\n"
    },
    {
      "commit": "39d9156bdc435999f01d8a06983924b77a75580a",
      "tree": "d923c1a1cb43909d50b2e49b0e9bbd9bae8c36bf",
      "parents": [
        "b04be9b4ee45613000c669224044c2d2fbb86d4d",
        "f2b1e03606968acc7557c3e35e7e36a7da3ec524"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Jan 21 21:28:44 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Jan 21 21:28:44 2020 +0000"
      },
      "message": "Merge \"Export the unwinder implementation from libc.\""
    },
    {
      "commit": "ce4c42e09fb9039df7c6a5b7306119279a694897",
      "tree": "13e38338ea7bc859b295b923be6a7acd73edbebc",
      "parents": [
        "43d5f9d4dd83d15a859d9be1359c4a4a47381fea"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 21 13:56:21 2020 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Jan 21 13:57:26 2020 +0000"
      },
      "message": "Revert \"Add tagged pointers to bionic.\"\n\nThis reverts commit 43d5f9d4dd83d15a859d9be1359c4a4a47381fea.\n\nBug: 135754954\nBug: 147147490\n\nExempt-From-Owner-Approval: clean revert\n\nReason for revert: Breaks ART gtest, see:\nhttps://ci.chromium.org/p/art/builders/ci/angler-armv8-non-gen-cc/561\n\nThe crash happens on mprotect of a page, the test crashes with ENOMEM.\n\nChange-Id: I52eea1abbfaf8d8e2226f92d30aa55aba3810528\n"
    },
    {
      "commit": "43d5f9d4dd83d15a859d9be1359c4a4a47381fea",
      "tree": "95339c5cb5d055b8fd2b216b46e6264180c4fc36",
      "parents": [
        "d2b8149ddad8b21ce535fb02ff752c85c7aa9d43"
      ],
      "author": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Tue Jan 07 15:47:47 2020 -0800"
      },
      "committer": {
        "name": "Mitch Phillips",
        "email": "mitchp@google.com",
        "time": "Wed Jan 15 15:03:00 2020 -0800"
      },
      "message": "Add tagged pointers to bionic.\n\nThis patch introduces tagged pointers to bionic. We add a static tag to\nall pointers on arm64 compatible platforms (needs requisite\ntop-byte-ignore hardware feature and relevant kernel patches).\n\nWe dynamically detect TBI-compatible devices (a device with the TBI feature and\nkernel support) at process start time, and insert an implementation-dependent\ntag into the top byte of the pointer for all heap allocations. We then check\nthat the tag has not been truncated when deallocating the memory.\n\nIf an application incorrectly writes to the top byte of the pointer, we\nterminate the process at time of detection. This will allow MTE-incompatible\napplications to be caught early.\n\nBug: 135754954\nBug: 147147490\n\nTest: cd bionic \u0026\u0026 atest .\nChange-Id: I6e5b809fc81f55dd517f845eaf20f3c0ebd4d86e\n"
    },
    {
      "commit": "f2b1e03606968acc7557c3e35e7e36a7da3ec524",
      "tree": "97fc6c6a20f8a2eeb63d17dbeab9092feb8f584f",
      "parents": [
        "27a8c60f045f939ab1cb7157313778966ed29404"
      ],
      "author": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Tue Dec 10 17:41:16 2019 -0800"
      },
      "committer": {
        "name": "Peter Collingbourne",
        "email": "pcc@google.com",
        "time": "Fri Jan 10 19:07:59 2020 -0800"
      },
      "message": "Export the unwinder implementation from libc.\n\nThis supports the soong commit which causes most platform binaries to stop\nstatically linking against the unwinder implementation. The soong commit\nmessage has more motivation for this change.\n\nARM32 uses LLVM libunwind, while all other platforms use libgcc as the\nunwinder implementation. This matches the current choices of unwinders on\nthe various architectures, but means that apps which were directly linking\nagainst the libc.so unwinder symbols on ARM32 are now using LLVM libunwind\ninstead of libgcc.\n\nSet libc_headers sdk_version to 1 so that libunwind_llvm can depend on it,\nand stop statically linking libunwind into libc_malloc_debug.\n\nBug: 144430859\nChange-Id: I52c7f7893d93f500383aeb0b76086c3b6f1935a5\n"
    },
    {
      "commit": "4956c372cf320328952665629b2626e7cbc84c54",
      "tree": "7a02304c6c2eadc93b1b7a357fb31a143b661a89",
      "parents": [
        "e592dacfa254f59bb097c98d118d0c860b181da1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Dec 19 16:35:51 2019 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 02 14:09:50 2020 -0800"
      },
      "message": "Move bionic_macros.h from private to platform.\n\nTest: treehugger\nChange-Id: Ie473914f4c8924c7240b3ac22093a9daf42fc948\n"
    },
    {
      "commit": "e4619f771984064da861a1be17de53132542dade",
      "tree": "2a9d64631584bf725571225d1ee34cf0fdf5b04d",
      "parents": [
        "17dfa33200f8b72e3bf96271f590e2fd7db10529"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 11 14:17:44 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 15 14:19:33 2019 -0800"
      },
      "message": "Add automatic running of tests on bionic changes.\n\nmalloc debug and malloc hooks have been broken for a long time\nand no one noticed. So add them to be run by default on bionic\nchanges since that provides the most coverage.\n\nChange the malloc debug and malloc hooks tests to support isolated\nruns.\n\nChanged the name of the malloc hooks unit tests to system tests\nbecause they weren\u0027t really unit tests.\n\nChanged the verify leak malloc debug tests to print out extra\ninformation so it is possible to figure out what sized allocation\nfailed.\n\nTest: Ran tests.\nChange-Id: Idea4c864f1d62598148ee78d7c9397e45234b1ca\n"
    },
    {
      "commit": "6f517cd7a1142191fde2201b6c529758e7ff6895",
      "tree": "49105414620136e4a9bf2c613a3f8c29a5c00062",
      "parents": [
        "ca1834de7a8180ee8db0a629fa950387c9da49b1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 08 11:28:38 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Nov 08 11:49:14 2019 -0800"
      },
      "message": "Rename iterate to malloc_iterate internally.\n\nI have no idea why I used the iterate name internally which is\ncompletely unlike every other function name. Change this to match\neveryone else so that it\u0027s now malloc_iterate everywhere.\n\nThis is probably the last chance to change this before mainline\nmodules begin, so make everything consistent.\n\nTest: Compiles, unit tests passes.\nChange-Id: I56d293377fa0fe1a3dc3dd85d6432f877cc2003c\n"
    },
    {
      "commit": "ff88fb0d3adbc67a4f94f5ef7e2b5bcc7a96c8f3",
      "tree": "1a78e188d9e51383579f697cb5532846b841cd69",
      "parents": [
        "1994f28be2c0faf2b70b1ca8fff7d8d2fa68d922"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 04 18:40:00 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Nov 06 10:42:42 2019 -0800"
      },
      "message": "Fix allocations escaping malloc debug.\n\nWhen using a FILE object for some malloc debug functions, calling\nfprintf will trigger an allocation to be put in the object. The problem\nis that these allocations were not allocated by the malloc debug\nwrapper and they get freed during the fclose as if they are malloc\ndebug allocation. In most cases, the code will detect the bad pointer\nand leak the memory, but it might also cause a crash.\n\nThe fix is to avoid using fprintf so that no allocations are made\nin the object that survive and need to be freed in the fclose call.\n\nChange the MallocXmlElem.h to use a file decsriptor not a FILE object.\n\nAdd new unit and system tests to detect this case.\n\nBug: 143742907\n\nTest: Ran unit and system tests.\nTest: Ran bionic unit tests.\nChange-Id: I524392de822a29483aa5be8f14c680e70033eba2\n"
    },
    {
      "commit": "f302cfb26bd840a3b4adaa8aa7be0f369c68483b",
      "tree": "019d7d78e3d0e295418267d68c6404621b2246df",
      "parents": [
        "e87e0dcbaec82aad9e2e3b441384a4b39a419105"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Oct 07 15:52:21 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Oct 07 15:52:21 2019 +0900"
      },
      "message": "libc_malloc_[debug|hooks] are not available for platform\n\nThe libs are not available for platform. Thus removing\n\u0027//apex_available:platform\u0027 from the apex_available property. However,\nsince there are test modules that statically links the libs, we\nexceptionally make the static variant of the libs available to the\nplatform.\n\nTest: m\nTest: mm under bionic does not create\nout/target/product/\u003cname\u003e/system/lib[64]/libc_malloc_[debug|hooks].so\n\nChange-Id: Ia6d473658c4231b04b5db511f9dacbbdf0f207b0\n"
    },
    {
      "commit": "e87e0dcbaec82aad9e2e3b441384a4b39a419105",
      "tree": "da1d4ede0f523aca496a5b39c892f19d1a8f1106",
      "parents": [
        "67ff8b5f9cb1af1a633e96a771e386d3305c6799"
      ],
      "author": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Wed Oct 02 17:09:33 2019 +0900"
      },
      "committer": {
        "name": "Jiyong Park",
        "email": "jiyong@google.com",
        "time": "Mon Oct 07 13:52:32 2019 +0900"
      },
      "message": "Restrict the availability of the bionic libs\n\nThe bionic libs are now restricted to be in the runtime APEX and the\nplatform (for bootstrapping). It can still be referenced from other\nAPEXes but can\u0027t be included there.\n\nBug: 139870423\nTest: m\nChange-Id: I7f99eef27ccf75844ca5c9a7ea866496841b738f\n"
    },
    {
      "commit": "2b0638ef29bb305f8a37c16c706fb0ee80a994c0",
      "tree": "bea668f7605903876618505b7aec795da94ea4ae",
      "parents": [
        "1ffee0cfc1e3a7fddf4cbe633694be91e72265a1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Sep 11 19:05:29 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Sep 16 12:27:33 2019 -0700"
      },
      "message": "Make bionic_malloc.h a platform header.\n\nInstead of having platform directories directly include the\nprivate header, create a platform header directory and export it.\n\nBug: 130763340\n\nTest: Builds.\nChange-Id: Ie0f092b3fe077a3de8b90266c0b28bfbc20d0dfa\nMerged-In: Ie0f092b3fe077a3de8b90266c0b28bfbc20d0dfa\n(cherry picked from commit 8f582ef2f8a77d953d0e9f33387f592d20f852e2)\n"
    },
    {
      "commit": "4ea19214a4d43c90fddb9c427311e8cd9ebfa9e7",
      "tree": "bdff939c77b02aa545e7d8cc840b424a682ee4a3",
      "parents": [
        "6b2532e19a76e9b809d2e52e677b1f2004159443"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Tue Jul 23 13:31:14 2019 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Wed Jul 24 12:16:41 2019 -0700"
      },
      "message": "Link libc++demangle.\n\nThe demangler is moving out of libc++abi to save on bloat.\n\nTest: make checkbuild\nBug: http://b/138245375\nChange-Id: I7402894bb326f524388c9efdf86509dad50f2018\n"
    },
    {
      "commit": "9782b8707484addc0c90b641422e583e95ab7b35",
      "tree": "6c76c9f4832eae6764ee9425fc8f50bd19fa7c79",
      "parents": [
        "9cf76012aa5edc11050920ab1b65817c1be1a112"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jul 18 13:36:50 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jul 18 21:11:22 2019 +0000"
      },
      "message": "Move to the libc++ demangler.\n\nBug: 136138882\n\nTest: Ran malloc debug tests.\nTest: Ran an app with backtrace_full and verified demangling working in\nTest: log file.\nTest: Enabled leak checking and verified that the logs include properly\nTest: demangled.\nChange-Id: Ic4fd9f1522451e867048ac1bea59d8c5ed0d3577\n"
    },
    {
      "commit": "705de3c6398d53b780d731008bafc3c2dafbbf85",
      "tree": "1118ec9cf1ce812c4d02d482a3b0f1a311036e32",
      "parents": [
        "d277334059f5c0c08ea312cad84f003c0d9f3519"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 22 13:39:57 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 22 17:16:37 2019 -0700"
      },
      "message": "Disable malloc debug when asan enabled.\n\nBug: 123312263\n\nTest: Verified with asan enabled, malloc debug does not initialize.\nTest: Ran tests on non-asan build and verify they pass.\nChange-Id: I3c37c170bf6c1de42740972f2113ae991351d931\n"
    },
    {
      "commit": "b9667b51a8e9831baa1e54362b1f614a911e4e76",
      "tree": "8cd85f5d36203311abe54a0aa1b977b59d9ad7f0",
      "parents": [
        "72aafad9506d65c8c0f957cae4b664402cc0e8ab"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 17 13:45:18 2019 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri May 17 14:26:31 2019 -0700"
      },
      "message": "Export some symbols for vendor libmemunreachable\n\nAdd the malloc symbols used by libmemunreachable to the VNDK, and\nmake libc_malloc_debug_backtrace vendor_available.\n\nBug: 132302484\nTest: m checkbuild\nChange-Id: Ide555195afa084c13eaeaf0eab6ff90787b5f2d0\n"
    },
    {
      "commit": "d269fcc935b276502b9e47a575d76693fe1b8455",
      "tree": "cb9e09297fb247d3d8511565e25a930336b6bc72",
      "parents": [
        "9433a0299e2493303776713072f0744d18c705dc"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 06 19:03:59 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 07 13:16:58 2019 -0700"
      },
      "message": "Avoid using malloc debug code after exit.\n\nI wrote a new unit test that would fail on the old version of the\ncode.\n\nOn a walleye big cpu, this costs about 40ns-50ns (going from ~430ns to ~480ns).\nI think this is an acceptable performance degradation.\n\nBug: 131867816\n\nTest: New unit tests pass.\nChange-Id: I4c0f4373fb0694bf29c3824dbb1224a8a17e211e\n"
    },
    {
      "commit": "8189e77bbb47dbaa1a09d565c62c2fed03e358c3",
      "tree": "2c8fc5d8fd1ec1ab881d35519670104ad86283e3",
      "parents": [
        "b9a7c651f178323e27752406f89d741cfb143e61"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 09 16:37:23 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 16 11:22:06 2019 -0700"
      },
      "message": "Remove gMallocLeakZygoteChild.\n\nRemove this global variable and change the setting of it to non-zero\nto a call to android_mallopt.\n\nIn addition, change the initialize function to use pass a bool* instead of\nint*.\n\nBug: 130028357\n\nTest: Ran malloc_debug/malloc_hooks/perfetto tests.\nChange-Id: I20d382bdeaaf38aac6b9dcabea5b3dfab3c945f6\nMerged-In: I20d382bdeaaf38aac6b9dcabea5b3dfab3c945f6\n(cherry picked from commit 5225b342f0810c027df3d09fbbcef4d324b19b93)\n"
    },
    {
      "commit": "c328e4465d12d760f5fbcb2daddf5fa4138f50b1",
      "tree": "fd91c386332bbe1198cb0bedc11505b76d146057",
      "parents": [
        "4699cf61746d37fc11c8eb8bdfc7eb296a476e4b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 01 19:31:26 2019 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 02 10:55:21 2019 -0700"
      },
      "message": "Disable info messages by default for malloc debug.\n\nAdd a new option verbose for malloc debug that is not enabled by default.\nThis disables all of the info log messages. It turns out these log\nmessages can add a measurable amount of time and can change the boot up.\n\nBug: 129239269\n\nTest: Adjusted unit tests pass.\nTest: Verified no messages unless verbose option used.\nChange-Id: I805cb7c8ecb44de88119574e59d784877cacc383\n"
    },
    {
      "commit": "1fc5ccfe762f4cf2322a53215934492003dae49e",
      "tree": "b07af2f8b2466d0a7210b2aaacd97af5fe70efbd",
      "parents": [
        "ac74615c1c3638d33448f0f6995fb8bc9599f062"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 15 18:06:15 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 15 10:54:55 2019 -0700"
      },
      "message": "Add a platform API for setting an allocation limit.\n\nIntroduce an M_SET_ALLOCATION_LIMIT enumerator for android_mallopt(),\nwhich can be used to set an upper bound on the total size of all\nallocations made using the memory allocation APIs.\n\nThis is useful for programs such as audioextractor and mediaserver\nwhich need to set such a limit as a security mitigation. Currently\nthese programs are using setrlimit(RLIMIT_AS) which isn\u0027t exactly\nwhat these programs want to control. RLIMIT_AS is also problematic\nunder sanitizers which allocate large amounts of address space as\nshadow memory, and is especially problematic under shadow call stack,\nwhich requires 16MB of address space per thread.\n\nAdd new unit tests for bionic.\n\nAdd new unit tests for malloc debug that verify that when the limit\nis enabled, malloc debug still functions for nearly every allocation\nfunction.\n\nBug: 118642754\nTest: Ran bionic-unit-tests/bionic-unit-tests-static.\nTest: Ran malloc debug tests and perfetto integration tests.\nChange-Id: I735403c4d2c87f00fb2cdef81d00af0af446b2bb\n"
    },
    {
      "commit": "76dcc478d348d07fa0e74a7f4d4c1e829eaa2bb8",
      "tree": "0652b53abee71ce853e36b8b0e16c657da7be4da",
      "parents": [
        "ff16c0b89b7297bc70353f60afac9bb93d6b0087"
      ],
      "author": {
        "name": "Iris Chang",
        "email": "iris.chang@mediatek.com",
        "time": "Thu Mar 07 12:32:19 2019 +0800"
      },
      "committer": {
        "name": "Iris Chang",
        "email": "iris.chang@mediatek.com",
        "time": "Fri Mar 08 11:04:36 2019 +0800"
      },
      "message": "Malloc debug: fix mutex deadlock issue\n\nWhen we enable free_track option, one thread is in AddFreed-\u003eRemoveBacktrace\nflow (hold free_pointer_mutex_ first and try to lock frame_mutex_), and\nother thread do fork and enter PrepareFork flow (hold frame_mutex_ first\nand try to lock free_pointer_mutex_), this situation may result in mutex\ndeadlock issue.\n\nBug: 127733115\nTest: build pass and stress test pass\nChange-Id: Ie5fcc4ef6c169372ad73d81978cfb2a726b6c03e\n"
    },
    {
      "commit": "6c619a0da3f96a26d91c1db48fd3e3be156aabe5",
      "tree": "aa0802d01d19ed0891e6b77a732cc72ed5617dcc",
      "parents": [
        "4e167f35d602f9dcede3b74ff3e09e88f3edb398"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 01 17:59:51 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 07 08:39:55 2019 -0800"
      },
      "message": "Refactor the malloc_info code.\n\nmalloc_info needs to be per native allocator, but the code treated it\nlike a global function that doesn\u0027t depend on the native memory allocator.\n\nUpdate malloc debug to dump the actual pointers that it has been tracking.\n\nTest: bionic-unit-tests pass.\nTest: malloc debug tests pass.\nTest: malloc hook tests pass.\nChange-Id: I3b0d4d748489dd84c16d16933479dc8b8d79013e\nMerged-In: I3b0d4d748489dd84c16d16933479dc8b8d79013e\n(cherry picked from commit a3656a98b10d2a4a6194a5d9705ad9c2cc5877b0)\n"
    },
    {
      "commit": "a22f5d5175df5c42ec86d2c2db250edf1f64084c",
      "tree": "66d2980a1b04626c7e4fc1437e96194b958ea8f8",
      "parents": [
        "0771b752f1b955e7ded6ccbbf825b0ae93439eb5"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 01 16:40:59 2019 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 01 23:56:23 2019 -0800"
      },
      "message": "Make aligned_alloc match the standard.\n\nJemalloc does not verify that the size parameter is a multiple of\nalignment. Fix this since it only went into P.\n\nFix the unit tests, and fix malloc debug/malloc hooks to handle this\nnew restrictive behavior.\n\nBug: 126944692\n\nTest: Ran bionic unit tests.\nTest: Ran bionic unit tests with malloc hooks enabled (no new tests fail).\nTest: Ran bionic unit tests with malloc debug enabled (no new tests fail).\nTest: Ran malloc debug unit tests.\nChange-Id: I4d50785928815679c781ca729f998454d76b9192\n"
    },
    {
      "commit": "b34415046c91d8e4af4e748689af3cb0080e0b05",
      "tree": "f69a02f5e605b2a8e0e6575804d9493b64289824",
      "parents": [
        "1b82812635e35667df9d28e7416d4b02c2083dfe"
      ],
      "author": {
        "name": "Iris Chang",
        "email": "iris.chang@mediatek.com",
        "time": "Tue Feb 12 14:00:59 2019 +0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 14 17:15:03 2019 -0800"
      },
      "message": "malloc debug: fix LogFreeError error log\n\nWhen free_track option is enabled and malloc debug detects error in\nVerifyFreedPointer flow, if freed pointer\u0027s usable_size is more than\ng_debug-\u003econfig().fill_on_free_bytes(), the error log is not correct.\n\nThe max. bytes printed to error message should be the max bytes to\ncmp, not usable size.\n\nBug: 124420174\nTest: build pass and test pass\nChange-Id: I41f35ab3330e49e0a6ad276d405bf4f6c3f0ea92\n"
    },
    {
      "commit": "7f209a979c55a58e91946a2efd5f0b339ffe309c",
      "tree": "481e04cf25531a9ced30b032bb5ba93f06de674e",
      "parents": [
        "822326db922ac5d0e4dea8cff1d774e8f04db94a"
      ],
      "author": {
        "name": "Iris Chang",
        "email": "iris.chang@mediatek.com",
        "time": "Wed Jan 16 11:17:15 2019 +0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 22 15:54:36 2019 -0800"
      },
      "message": "Bionic malloc debug: add a new option \"abort_on_error\"\n\nThis new option causes an abort after malloc debug detects an error.\nThis allows vendors to get process coredumps to analyze memory for\ncorruption.\n\nBug: 123009873\nTest: New test cases added for unit tests and config tests.\n\nChange-Id: I6b480af7f747d6a82f61e8bf3df204a5f7ba017f\n"
    },
    {
      "commit": "770032ddfa31f6ed18e6ec85013b7939cd291eb0",
      "tree": "28dc26ae8a6b3623e79d1bb2b19fd5362477843c",
      "parents": [
        "7bd54ade8d12762ef6bdb0096f3838261f14eee5"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Jan 02 10:59:48 2019 -0800"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Jan 02 11:04:05 2019 -0800"
      },
      "message": "Fix/suppress bionic google-explicit-constructor warnings\n\n* Add explicit to conversion constructors/operators\n\nBug: 28341362\nTest: make with WITH_TIDY\u003d1 DEFAULT_GLOBAL_TIDY_CHECKS\u003d-*,google-explicit-constructor\nChange-Id: Id1ad0327c1b8c6f094bcbb3ae599bc1f716b3f2f\n"
    },
    {
      "commit": "b233fab925ca9b8370e83c2577610b26cb143619",
      "tree": "c769a8eaf1e5fbb4e32c437d82f2433b65a6668e",
      "parents": [
        "0c499a69e3d8b858f53a7410285416c0cb30f83b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Dec 18 16:44:42 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Dec 18 17:45:46 2018 -0800"
      },
      "message": "Fix handling of libs with a ro map and a rx map.\n\nWhen the linker was changed so that it put a read-only map and\nread-execute map, this code incorrectly computed the relative pc and\noffset. Modify to look for the actual start map in this case.\n\nAlso, change the load_base name to load_bias.\n\nBug: 120613266\n\nTest: Dumped logcat while dumping backtraces.\n\nChange-Id: I6628694c5222ea34d63217af3d138707d4900004\n"
    },
    {
      "commit": "b3fe0136d85f889ba467ea3e259bd18805c06762",
      "tree": "0e01f063363e40df54e89141e666056eedd1283e",
      "parents": [
        "bbd465a230401b41fa6c1375ea5ab139f7fede7e",
        "56794421fc41e5ed28b7546634051458159bbfd4"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Thu Nov 08 04:59:14 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Thu Nov 08 04:59:14 2018 +0000"
      },
      "message": "Merge \"Revert \"Disable lld, libc_malloc_debug failed to boot.\"\""
    },
    {
      "commit": "56794421fc41e5ed28b7546634051458159bbfd4",
      "tree": "5b4352c5e0ddacfac7785f290f08a7535b0631ad",
      "parents": [
        "0e87940961f999aad65834abf7a09e86b569ed3b"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Nov 07 22:02:27 2018 +0000"
      },
      "committer": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed Nov 07 23:49:37 2018 +0000"
      },
      "message": "Revert \"Disable lld, libc_malloc_debug failed to boot.\"\n\nThis reverts commit 0e87940961f999aad65834abf7a09e86b569ed3b.\n\nReason for revert: This should have been fixed.\nBug: 78118944\n\nChange-Id: I796ff2420ec3682dd54a059175a8428868b75c23\n"
    },
    {
      "commit": "5e62b34c0d6fa545b487b9b64fb4a04a0589bc13",
      "tree": "e08ee44067b3b636ace11b21ec8d63a08d4d2a19",
      "parents": [
        "c89a3971e94c30611c885e4c440eae2fd9937948"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 11:00:00 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 11:00:00 2018 -0700"
      },
      "message": "Clean up bionic_macros.h a bit.\n\nUse \u003candroid-base/macros.h\u003e instead where possible, and move the bionic\nmacros out of the way of the libbase ones. Yes, there are folks who manage\nto end up with both included at once (thanks OpenGL!), and cleaning that\nup doesn\u0027t seem nearly as practical as just making this change.\n\nBug: N/A\nTest: builds\nChange-Id: I23fc544f39d5addf81dc61471771a5438778895b\n"
    },
    {
      "commit": "6774cc5b9901097fcf9311e6cd91d0465919b77f",
      "tree": "78d4b889ec421cf2282d2441e6378ce9b670cb11",
      "parents": [
        "9df26193c8adc43a7ac1ba807e70d0b0772712c0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 04 08:41:10 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Oct 04 08:41:10 2018 -0700"
      },
      "message": "Add new parameter for creation of MapInfo object.\n\nBug: 109657296\n\nTest: Unit tests pass.\nChange-Id: Ie33b50234fa9ba2c5107c3eb0da36a466bba1589\n"
    },
    {
      "commit": "ad935c8139adcd4bdf9f9b030bcb265f93ee6f8b",
      "tree": "781acf1fa52c368d8b3cd59e2b935b9603c47b57",
      "parents": [
        "841c9c1ce2d86af6a3f0e17cea29bbe86421a89f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 16 15:59:48 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 16 17:57:23 2018 -0700"
      },
      "message": "Add more descriptive text around app starting.\n\nTest: NA\nChange-Id: If3bcf060b11ec08835863236b0a1408aebe43355\n"
    },
    {
      "commit": "0dc784431b3e0a5964b257753e2bf4dcc96a463d",
      "tree": "112d7833549c2064988a53b6ad633117567bb6f3",
      "parents": [
        "5285d5995b37df589907b8fb00993b4414e7fd81"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Aug 09 15:19:57 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Aug 14 16:01:58 2018 -0700"
      },
      "message": "Add new malloc benchmarks.\n\nThis runs through the trace of the allocations in a sql benchmark app\nexecuted in the benchmark thread.\n\nAdd one benchmark with decay time set to 0 and another with decay time\nset to 1.\n\nInclude a script that can generate a header file that can be used to\nregenerate the data.\n\nBug: 112317428\n\nTest: Builds, ran unit tests, ran benchmarks.\nChange-Id: I62e287cc06b74b74bcc5a4bbee71b0fac0a196fd\n"
    },
    {
      "commit": "32bc0fcf69dfccb3726fe572833a38b01179580e",
      "tree": "abca656f500087493e0997d5cf38cbcc9ec98eb8",
      "parents": [
        "65f82092a17518080178ff7004cc6db362ebfbcd"
      ],
      "author": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 17:31:13 2018 -0700"
      },
      "committer": {
        "name": "Yi Kong",
        "email": "yikong@google.com",
        "time": "Thu Aug 02 18:09:44 2018 -0700"
      },
      "message": "Modernize codebase by replacing NULL with nullptr\n\nFixes -Wzero-as-null-pointer-constant warning.\n\nTest: m\nBug: 68236239\nChange-Id: I5b4123bc6709641315120a191e36cc57541349b2\n"
    },
    {
      "commit": "97b474710225bc4853ab314c3d9ca812dc375525",
      "tree": "dca19aa52db541c9ef7832d41d1630e81159b12a",
      "parents": [
        "06f217d399b1bf6345e4c71b014cdaac3d1c183a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jul 10 14:45:24 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 11 15:23:00 2018 -0700"
      },
      "message": "Disable malloc debug intercepts when exiting.\n\nThere is a hang when enabling leak_track since the dumping of the\nleak data can wind up doing an allocation.\n\nAdd new system unit test to make sure this doesn\u0027t happen again.\n\nBug: 111146059\n\nTest: Test program that leaks does not hang forever.\nTest: Unit tests pass.\nChange-Id: Icf99be58ba5db98ee124a471b957a086045f5870\n"
    },
    {
      "commit": "2e1a40a2033088e7f2e78424a8b163d3fcf84b1b",
      "tree": "51ec5d1703f6225d6dc58ad5b01f9c728e4f2883",
      "parents": [
        "2583b0adb201233313bbe02f665f5c623f2c5a30"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jun 13 10:46:34 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 15 12:29:13 2018 -0700"
      },
      "message": "Change heap dump format slightly.\n\nBump the version from v1.1 to v1.2 and add a build fingerprint line.\n\nUpdate the heap dump documentation to match the new format and reflect\nwhat made it in P and what made it in Q.\n\nUpdate the unit tests for this change.\n\nAdd -O0 to unit test code to make it easier to debug.\n\nAdd an external function that can be used by the framework code\nso that there is only one way to dump the heap.\n\nBug: 110095681\n\nTest: Ran unit tests.\nTest: Did a dump of a real process and verified fingerprint.\nTest: Did a dump of a process without malloc debug enabled.\nChange-Id: I769a476cbeaf4c85c5d75bd6d6385f0e3add948c\nMerged-In: I769a476cbeaf4c85c5d75bd6d6385f0e3add948c\n(cherry picked from commit c84a2a2601a4112ca6e43a33defb989c1da8c2f4)\n"
    },
    {
      "commit": "1d52a7b1be4693b0b8189b33f8db654f30914384",
      "tree": "d5c30a323a38c5090957a7d9a46ae5917db5d20b",
      "parents": [
        "5b867699fdea209be0044b75e32fcfff0a196dc4"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 01 13:40:38 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 01 13:42:25 2018 -0700"
      },
      "message": "Add an example of how to use multiple options.\n\nTest: NA\nChange-Id: I67b6c2f8eb8ad8ead98969e69990f540ecd9a770\n"
    },
    {
      "commit": "770cbb35cf3441770ce8a808f864beb68b0091cb",
      "tree": "172e8ed21d5c6027f93313bc65d9c4cb329b7e7e",
      "parents": [
        "8aa6d67f2d48aa01f099a85adc432097a13172f1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 25 12:46:55 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 25 13:28:05 2018 -0700"
      },
      "message": "Point to online documentation.\n\nTest: Unit tests pass.\nChange-Id: Ibbdc260bfdf6a6daf091c4a49cdf03e51f6ca6cf\n"
    },
    {
      "commit": "149671875d9c194ca41b6883e5b0884babefab44",
      "tree": "5112eeb82657f3d1254315ac6b3dd5bc8e8a709f",
      "parents": [
        "ebf58a6cefa7692702e3bd7abc88e09849391662"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 18:41:22 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu May 24 18:44:31 2018 -0700"
      },
      "message": "Link to native_heapdump_viewer.py.\n\nBug: N/A\nTest: N/A\nChange-Id: I1e448f30922d948513ebb65abc25c474ffbd5a24\n"
    },
    {
      "commit": "93bdd6ae3ad8322b7be2be0201c8db7227631d14",
      "tree": "42ee959b96c2c2db42f0569554680dbe22ce39ef",
      "parents": [
        "4c5c45346fcc6f066a89bfc455f287fe2f4e3e41"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Apr 05 11:12:38 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 24 08:44:53 2018 -0700"
      },
      "message": "Add support for using the new unwinder.\n\nThis adds a new option backtrace_full, when it is set, then it will use\nlibunwindstack.\n\nModify the dump to file data to dump the extra information from libunwindstack.\nAlong with the new dump file format, change the version to v1.1.\nUpdated document for new format of file data.\n\nAdd unit tests for the new functionality.\n\nBug: 74361929\n\nTest: Ran unit tests.\nChange-Id: I40fff795f5346bba7b9d7fde2e04f269ff4eb7f1\n"
    },
    {
      "commit": "c151bc30789ade22d5423b20d2c72948284bba3c",
      "tree": "687fae810571b1147c5ccb0b5f31fb7515489537",
      "parents": [
        "8602538a15f89f91d6994c3abfd64a274bf7ddb0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 01 12:59:37 2018 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 01 14:49:15 2018 -0700"
      },
      "message": "Fix nullptr dereference during sort.\n\nAdd new unit test that will crash without this fix.\n\nBug: 78900050\n\nTest: Ran unit tests.\nChange-Id: I73e1b89e965a7b399822c3a6f25cbc70d2d355e2\n"
    },
    {
      "commit": "0e87940961f999aad65834abf7a09e86b569ed3b",
      "tree": "a8a725361ab0d3cff2728d19ed5eb1f327196d80",
      "parents": [
        "af0ad77af5fc2a4f39fa29b4e6720898d92fb2b4"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Apr 16 10:50:52 2018 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Mon Apr 16 10:50:52 2018 -0700"
      },
      "message": "Disable lld, libc_malloc_debug failed to boot.\n\n* Linker rules for lld do not work with libunwind_llvm yet.\n\nBug: 78118944\nTest: make checkbuild and boot\nChange-Id: I0eda2409d9f365029f70f4255edffbeae49cb6d2\n"
    },
    {
      "commit": "5ad142157daa5c62d5bc45c6d3a4a29ce13f0c84",
      "tree": "e721a3bb13b4d3d02042d1e31e65afa10287d632",
      "parents": [
        "7dc7d2b7f2e9362399ad118505425fd7ab7e84a1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 06 15:13:14 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 06 15:13:14 2018 -0700"
      },
      "message": "Point to the NDK wrap.sh docs.\n\nBug: N/A\nTest: N/A\nChange-Id: Ic4c12a2ae43a6d733a23dcd2c901c2b6478eee97\n"
    },
    {
      "commit": "7dc7d2b7f2e9362399ad118505425fd7ab7e84a1",
      "tree": "23897ac3eef5f952c32597b7ca57c281227428f8",
      "parents": [
        "d238817037ea4f7d784c1e37f7370745af2ac81c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 06 14:44:49 2018 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 06 14:44:49 2018 -0700"
      },
      "message": "Stop claiming that malloc debug is only usable on rooted devices.\n\nBug: N/A\nTest: N/A\nChange-Id: Ie9d753e7c2b6cc06e1c8e562970a000858f1072e\n"
    },
    {
      "commit": "4da2503d70dc4bc1444454876e3794b69227d90d",
      "tree": "d904c750ebac96aee76df44baad1320c0db211a3",
      "parents": [
        "a3f6f6c1b9135c90e410f5382b153db9a43a4db0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 07 13:38:48 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 02 18:59:23 2018 -0700"
      },
      "message": "Refactor malloc debug.\n\nChanges\n- Refactor the code so that only guards require creating a special header\n  for every pointer allocated.\n- Store only a single copy of every backtrace. This saves memory so that\n  turning on the backtrace option doesn\u0027t result in 10X memory usage.\n- Added new option track_allocs that only verifies pointers are valid for\n  free/malloc_usable_size/realloc.\n- Remove suffix from test names.\n- Add the TRACK_ALLOCS options to all guard options.\n- Add new option verify_pointers that is a lightweight way to verify\n  pointers that are passed to allocation routines.\n- Do auto-formatting of the code.\n- Updated documentation for all of these changes.\n\nBug: 74361929\n\nTest: Ran unit tests.\nTest: Ran libmemunreachable unit tests.\nTest: Ran an app with backtrace enabled.\n\nChange-Id: I3246c48ae4f9811f64622d90d0a9b4d9d818702c\n"
    },
    {
      "commit": "cbc80ba9d839675a0c4891e2ab33f39ba51b04b2",
      "tree": "0b24e6123c94bd3e61d94fd6eca6a3b9cc9b074e",
      "parents": [
        "3374d0cabb973ff2b73ad8cd909389bdeed18658"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 14:26:29 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 13 14:27:17 2018 -0800"
      },
      "message": "Switch the rest of our internal headers to #pragma once.\n\nWe\u0027ve been using #pragma once for new internal files, but let\u0027s be more bold.\n\nBug: N/A\nTest: builds\nChange-Id: I7e2ee2730043bd884f9571cdbd8b524043030c07\n"
    },
    {
      "commit": "cae21a9b53a10f0cba79bf6783c4a5af16228fed",
      "tree": "c60c6622d2b80f9ad4ae5a990b7fb3439f16444b",
      "parents": [
        "be6fbae74fc3048647caadd58a9eaad81245e934"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 05 18:14:55 2018 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Feb 07 06:57:14 2018 -0800"
      },
      "message": "Add aligned_alloc to libc.\n\nBug: 72969374\n\nTest: Bionic unit tests pass.\nTest: Malloc debug unit tests pass.\nChange-Id: I235985bbc638855d94249c97c98f14ab2924bda0\n(cherry picked from commit d69ee59594088c0d92ba9273188ef53ea5e6cd6a)\n"
    },
    {
      "commit": "d50a1de565c00d415ad39ef8c14e392da4c99d43",
      "tree": "011e021bbb021d83634d00ffa3255ebd7d468cfe",
      "parents": [
        "a70089163ca09a983772dd2a8daa17e47f8ede53"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 05 17:30:57 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 05 17:30:57 2018 -0800"
      },
      "message": "Run bpfmt manually.\n\nBug: N/A\nTest: builds\nChange-Id: I0cf145c3b699ac8ef170a63366832f63a9cc1a91\n"
    },
    {
      "commit": "733c1e4221b0bbd6967813982dcad9f8342dd038",
      "tree": "24149efc78d3b4a70692bbc719ae5662ba49693c",
      "parents": [
        "a026108ec10c0b711add1e5fb920710ced4a9046"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 05 13:29:33 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 05 13:29:33 2018 -0800"
      },
      "message": "Avoid trademarks.\n\nAPI levels are generally more useful anyway.\n\nBug: N/A\nTest: N/A\nChange-Id: Ie7bd69c3d0223c9bc8ed52c871b1d2d34373e2d0\n"
    },
    {
      "commit": "3e235911c9cf5062adbb73efb53fe5ed712d7c53",
      "tree": "cdd84807bba4a7d0b0fd947555b2edaa2618df95",
      "parents": [
        "b44bd827abf2b870ebf4a0f6b126098a46bf42ec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 01 14:21:51 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Feb 01 14:45:15 2018 -0800"
      },
      "message": "Add `struct sigaction64` and `sigaction64`.\n\nBug: http://b/72493232\nTest: ran tests\nChange-Id: I47b0560a30aa33a9b1f1978dfb7f84d2e3d389b8\n"
    },
    {
      "commit": "e5fbd983cbbec9c1ea8a38e3d0ebf6b65232ffed",
      "tree": "d94d6e5bfb428e004e8669d8cd4c04253026fff2",
      "parents": [
        "055565b2aa973e7af2f7963403d755f412bb02e2",
        "5cec377f49d6429b19895eb632225cd757ea611e"
      ],
      "author": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Sat Jan 20 18:15:12 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Sat Jan 20 18:15:12 2018 +0000"
      },
      "message": "Merge \"Address a bunch of clang-tidy complaints.\""
    },
    {
      "commit": "5cec377f49d6429b19895eb632225cd757ea611e",
      "tree": "bcd08fe1e6b656a5a4e235a225fbe88feb54a112",
      "parents": [
        "0d63a3c233040af004cc470d5f76547f3adc0148"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:45:23 2018 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 19 15:56:12 2018 -0800"
      },
      "message": "Address a bunch of clang-tidy complaints.\n\nThere were a bunch more unreasonable/incorrect ones, but these ones\nseemed legit. Nothing very interesting, though.\n\nBug: N/A\nTest: ran tests, benchmarks\nChange-Id: If66971194d4a7b4bf6d0251bedb88e8cdc88a76f\n"
    },
    {
      "commit": "1a8106ec1aba6a5317f3dbfc3e8073630c18975b",
      "tree": "5b44ad966491ae76335e68ee1279032da95835b5",
      "parents": [
        "d16b09a4d2832d0daea6d211a6b5b5312d404425"
      ],
      "author": {
        "name": "Denis Hsu",
        "email": "denis.hsu@mediatek.com",
        "time": "Mon Jan 15 18:49:01 2018 +0800"
      },
      "committer": {
        "name": "Denis Hsu",
        "email": "denis.hsu@mediatek.com",
        "time": "Tue Jan 16 17:43:53 2018 +0800"
      },
      "message": "malloc debug: reset FreeTrackData mutex after fork\n\nLock the FreeTrackData mutex during fork and reset it in the child.\nEnsures that the FreeTrackData is consistent when forking from a\nmulti-threaded process, and that the mutex is in a defined state\nin the child.\n\nTest: 89hours MTBF test\nChange-Id: I5e5892832a733ea85727ec65abc7094d95a725ef\n"
    },
    {
      "commit": "5a1a9533fe296a274b0afac4504c9e6e02f362e5",
      "tree": "7a33d1364999c5c0e2beac2ee8f9ce840a2e0f88",
      "parents": [
        "558a4f59237245916d93075eb60ed7d16cf55c42"
      ],
      "author": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 03 08:50:16 2018 -0800"
      },
      "committer": {
        "name": "Mikhail Naganov",
        "email": "mnaganov@google.com",
        "time": "Wed Jan 03 08:52:56 2018 -0800"
      },
      "message": "Fix typo in README.md for malloc_debug\n\nThe examples on malloc options were erroneously\nspecifying to use \u0027guards\u0027 as an option to enable\nboth front and rear guards, whereas the correct\noption name is \u0027guard.\u0027\n\nChange-Id: I7118a832b6b308a7c312787f276bb87c1244986e\n"
    },
    {
      "commit": "cabc77f9172d74ff0bfc56d0797a6a8255b14f2a",
      "tree": "48d55bb7530c8fdf5ae0b72d65236d5c480def44",
      "parents": [
        "7d5777ef15136e4e12a27c85d7b06d6806b98e70"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 12:55:19 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Nov 28 12:55:19 2017 -0800"
      },
      "message": "Always wrap waitpid in TEMP_FAILURE_RETRY.\n\nStrictly not needed in the WNOHANG case, but it\u0027s probably best to have\nevery waitpid wrapped for future copy \u0026 pasters.\n\nBug: https://issuetracker.google.com/69525592\nTest: ran tests\nChange-Id: I013b0a52d2753e3d32638e9b84c79af7327fb405\n"
    },
    {
      "commit": "a613d0df5c682617380728a7d151483de05a4f92",
      "tree": "5a73110db954e5fc92116ad0930ed83495607729",
      "parents": [
        "3e8584d4a7d617289e8a954711ba895415d781c4"
      ],
      "author": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 05 16:39:33 2017 -0700"
      },
      "committer": {
        "name": "Dan Albert",
        "email": "danalbert@google.com",
        "time": "Thu Oct 05 23:41:47 2017 -0700"
      },
      "message": "Add a legacy inline for mmap64.\n\nWhile this was never an inline, this function alone has caused most of\nthe bug reports related to _FILE_OFFSET_BITS\u003d64. Providing an inline\nfor it should allow a lot more code to build with _FILE_OFFSET_BITS\u003d64\nwhen targeting pre-L.\n\nTest: make checkbuild\nTest: built trivial cc_binary for LP32 against API 14 with\n      _FILE_OFFSET_BITS\u003d64 set\nBug: lots\nChange-Id: I8479d34af4da358c11423bee43d45b59e9d4143e\n"
    },
    {
      "commit": "602b88ccddfafdefec023e7599d49c811ad3214f",
      "tree": "11730f3f0cbc308860c4e45d6f0310c7f2083041",
      "parents": [
        "e0e2798f11ca082fe0a796f167f9006c51dc3304"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Aug 04 13:04:04 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Sep 05 15:57:00 2017 -0700"
      },
      "message": "Provide method to dump backtrace heap data.\n\nFor non-zygote spawned processes, we might want to dump the backtrace\ndata. Provide a method to send a signal to a process and then dump the\ndata to a file.\n\nAdds a method to dump the backtrace data on exit.\n\nUpdate documentation and explain format of heap dump data.\n\nTest: Ran unit tests, enabled new options and used them.\nChange-Id: Ie2fa706694160731afe02c1382b037d06df1d069\n"
    },
    {
      "commit": "644275abe050e2f30b98f321fce916e838c84e52",
      "tree": "3359aa7279b386c1136c6e5f15b9bef70be4ad97",
      "parents": [
        "3ce8834e53304b66e5b0d0d56bc0efea1a172e95"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 15 23:17:35 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 15 23:17:35 2017 -0700"
      },
      "message": "Improve debug malloc docs slightly for app developers.\n\nBug: http://b/63098430\nTest: N/A\nChange-Id: Icde92f5e8b01b5f918cbfdc470b947bd56bb35c6\n"
    },
    {
      "commit": "a625ee2063dec60996f01e0274e4c352ab75c46b",
      "tree": "5654e79f8e65ba2372ff038d1e4285ea3ecf6629",
      "parents": [
        "498b4de964b5d38952acfe2d1823c13f20a641d3"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jun 01 14:16:32 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 02 10:10:24 2017 -0700"
      },
      "message": "Use libdemangle for function names.\n\nBug: 62141808\n\nTest: Ran unit tests, ran malloc debug with leaks and verified functions\nTest: are demangled.\nChange-Id: I1900632e9a55bb818b1aabc798224ff3eebc1fca\n"
    },
    {
      "commit": "c0352bbd5f8bd4c7696d3b71a0056dcfb2b44708",
      "tree": "ae90fd70a7381d5c9366feb8cfb16a240a06e1cd",
      "parents": [
        "a559cff654afd31d718d5f476003584f48c5932b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 25 18:26:37 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 25 18:38:45 2017 -0700"
      },
      "message": "Add offset to backtrace_string printing.\n\nThe libmemunreachable code uses backtrace_string to print out the backtrace\ninformation. However, when the offset of the map that a frame is in is\nnon-zero, no information is printed. This means that when a frame comes from\na shared library loaded from an apk, it\u0027s impossible to tell which\nshared library the frame is really coming from.\n\nAdd the offset display when it\u0027s non-zero. This means this can now be fed\nto development/scripts/stack to decode the frame.\n\nBug: 37276041\n\nTest: Ran dumpsys meminfo --unreachable on an app that leaks from a\nTest: shared library and verified the offset output is present.\nChange-Id: I61d34ae3f617622d354cc099eff520a64782b6e2\n"
    },
    {
      "commit": "4c65669ab77e5811ee5a6ad424403893265dc4b7",
      "tree": "5b1503d8e9b437fe85416f6816b63acafd3a5e4a",
      "parents": [
        "1143a629772c85b779b0f8249e1e223e27ff7481"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 24 19:04:33 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 25 17:23:08 2017 -0700"
      },
      "message": "Update malloc debug documentation.\n\nTest: NA\nChange-Id: I8ab73bfc28c7a673efb5b0cec6067989153f092a\n"
    },
    {
      "commit": "2b0f2a48557ab2dd1171aa3ae79359ba44143a01",
      "tree": "9f4b094e2f7c5e8409be584613bf20db56474850",
      "parents": [
        "8fbd15a6d0818916a821bc2138208f0251c9754f"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 19 13:47:16 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri May 19 13:47:16 2017 -0700"
      },
      "message": "Fix missing function export.\n\nBug: 36401135\n\nTest: Actually enable debug malloc and verify it loads properly.\nTest: Ran unit tests.\nChange-Id: I9df1699b06bb14c5df2c3cab35dc2eb0819033f1\n"
    },
    {
      "commit": "a1c0d2fd4ce96e123c4ae6506c9d637d747e1fe2",
      "tree": "b1f89edbd67d6b09b9cbdfb1bf03b65b2dac9ad4",
      "parents": [
        "ac58d33d343eba6a3370f541467f09802c48b24b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 15 15:50:19 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon May 15 16:59:16 2017 -0700"
      },
      "message": "Add support for modifying decay timer.\n\nAdd the mallopt function, and only a single option so far.\n\nBug: 36401135\n\nTest: Built and booted bullhead.\nTest: Ran jemalloc unit tests.\nTest: Ran bionic unit tests.\nTest: Ran a test that allocated and free\u0027d a large piece of memory,\nTest: and verified that after changing the parameter, the PSS\nTest: sticks around (decay timer set to 1), the PSS is purged (decay\nTest: timer set to 0).\nChange-Id: I6927929b0c539c1023d34772d9e26bb6a8a45877\n"
    },
    {
      "commit": "7a3681e5b6c39bc2b3b62031ca5941dbf7bc4e63",
      "tree": "78c25e2a38b7efed8db770a623a5cbfb7eaab11d",
      "parents": [
        "ca5e0f49ca5df873a20c996755175b5c9c1e2ed9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 24 17:48:32 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 03 08:50:43 2017 -0700"
      },
      "message": "Move libc_log code into libasync_safe.\n\nThis library is used by a number of different libraries in the system.\nMake it easy for platform libraries to use this library and create\nan actual exported include file.\n\nChange the names of the functions to reflect the new name of the library.\n\nRun clang_format on the async_safe_log.cpp file since the formatting is\nall over the place.\n\nBug: 31919199\n\nTest: Compiled for angler/bullhead, and booted.\nTest: Ran bionic unit tests.\nTest: Ran the malloc debug tests.\nChange-Id: I8071bf690c17b0ea3bc8dc5749cdd5b6ad58478a\n"
    },
    {
      "commit": "2b2b25b87827102671cdd4b25c01aa22a9971a63",
      "tree": "d318825c7548379a307beee5b78580e51ce97a52",
      "parents": [
        "e06c69d07324f3da67aa063202e698dedd831365"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 05 19:13:03 2017 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Apr 06 15:30:42 2017 -0700"
      },
      "message": "Refactor Config from a struct to a class.\n\nThis should make it easier to add new options, and to add options that\nare complex. For example, I want to modify the behavior of\nrecord_allocs_file so that it also enables record_allocs to a default\nstate.\n\nTest: All unit tests pass.\nTest: Enable the backtrace option and restart.\nChange-Id: Idf5cdeed06ade3bc2c8ae39d228734bf65209b4f\n"
    },
    {
      "commit": "426b00a29b61a3ac0135373e8c5140957bd867da",
      "tree": "7d8245cd14cf4f31f2f379c67fd60a4914b34b2d",
      "parents": [
        "b3b11edda111a44c979aa5cd5363ce6064ff4092"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 09 13:47:37 2017 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Mar 09 13:47:37 2017 -0800"
      },
      "message": "Fix the way malloc debug returns info.\n\nWhen I rewrote malloc debug, I accidentally thought that each\nvalue returned in the info buffer contained the number of backtrace\nframes in the backtrace. This was incorrect, it should have been\nthe total number of allocations with the same backtrace.\n\nThis is a temporary fix that sets that value to 1. The better fix is\nto de-dupe backtraces and then return all allocations of the same size\nwith the same backtrace.\n\nI updated the documents to describe this.\n\nBug: 31854476\n\nTest: Unit tests pass.\nChange-Id: Idf9efaa3d363923b5d7543d90dc7c65a0ed553d9\n"
    },
    {
      "commit": "191d2f3c9959d1b051bac8346b0f80b0bcb0ef15",
      "tree": "cfa030fe8325c7e999e6d3c2da136d9ceaa3cfb7",
      "parents": [
        "7844b4c5dbd0be9ea4212a523da2dd6a4804032c"
      ],
      "author": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Mon Jan 23 18:56:53 2017 -0800"
      },
      "committer": {
        "name": "Vijay Venkatraman",
        "email": "vijaykv@google.com",
        "time": "Mon Jan 23 18:56:53 2017 -0800"
      },
      "message": "Removed include log\\logger.h from log_fake.cpp\n\nTest: Compile malloc_debug_unit_tests\nChange-Id: I635687016570ba52c571435b87d8e89f7f04d609\n"
    },
    {
      "commit": "ac81fe8657119c265edcc2f05b3e5b7c5b17ae9f",
      "tree": "99a6e825926829bb7c8d955cbc96ae1777691ef9",
      "parents": [
        "8945d5e43a25737f3f888a90742cc918b1124a05"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Aug 26 15:54:59 2016 +0100"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Nov 17 13:13:27 2016 -0800"
      },
      "message": "Enable malloc debug using environment variables\n\nPreviously malloc debug can be enabled only using global settings\naccessible to the root user only. This CL adds a new option to enable\nit using environment variables making it possible to use it with pure\nnative (shell) applications on production builds (from shell user) and\nprepares it for using it from logwrapper on production devices.\n\nRemove the old environment variable and property since they are not\nnecessary.\n\nTest: Enable malloc debug using environment variable and verify\nTest: that it only affects the commands launched from the shell.\nTest: Enable malloc debug using the property variable and verify\nTest: that it affects all commands.\nTest: Run all unit tests in 32 bit and 64 bit.\nChange-Id: Iecb75a3471552f619f196ad550c5f41fcd9ce8e5\n"
    },
    {
      "commit": "a19bc2d4edfc261bdccfc5f855c50e83477b3757",
      "tree": "2cb3b588486f4d25f0574499fe6a1913e56cacbf",
      "parents": [
        "f97b27a9c06a61206dd1edbbfc5e11b2a293b462"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Nov 15 14:04:16 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Nov 16 10:55:20 2016 -0800"
      },
      "message": "Fix uninitialized variable usage.\n\nIf the dladdr call fails, then info.dli_fname will be unitialized.\nMake sure that this can\u0027t happen.\n\nBug: 32907235\n\nTest: Enabled malloc debug on an angler and verified that function names\nTest: still work.\nChange-Id: I738e66d9f37bce07bc4c10f1f9bac11fbfdae2c7\n"
    },
    {
      "commit": "ac66d16a5287eb045114c55581213928502198a7",
      "tree": "acafb85f9b39d59fe3eba1779c1a8c9de53722a5",
      "parents": [
        "1d20532f5c5f8c1638735eb04586be82a7d0379c"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Sep 28 14:51:12 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Sep 28 14:54:06 2016 -0700"
      },
      "message": "Update documentation.\n\nFix the incorrect mention of when the zygote flag is set on a size.\n\nAdd information about how to use am dumpheap -n to dump the native\nheap to a file.\n\nTest: Documentation only change.\n\nChange-Id: I82e810ee7ffffcf7506fb6fd9bcfdfb0465a48be\n"
    },
    {
      "commit": "4bef28161f6c13b3690914eb14413faf5c74e91c",
      "tree": "ff7fd27b8cdecc121e4b80b563f93ba49a4b1c80",
      "parents": [
        "52ea18658fb3939aa02cebcb53eef053ba132566"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Sep 02 16:35:50 2016 +0100"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Wed Sep 07 16:12:02 2016 +0100"
      },
      "message": "Fix unittests broken by 545808a\n\nChange-Id: I590af5958e4dcb772b710be965ed6c99cd1d9234\n"
    },
    {
      "commit": "545808a60875868d5cc5226024440679590bb808",
      "tree": "c6a120ff56cdee0e20c80e8750679f9a4b86c598",
      "parents": [
        "42d24ca8188fac3ba96a1b9a482924658668973b"
      ],
      "author": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Aug 26 12:34:16 2016 +0100"
      },
      "committer": {
        "name": "Tamas Berghammer",
        "email": "tberghammer@google.com",
        "time": "Fri Aug 26 12:34:16 2016 +0100"
      },
      "message": "Fix a typo in the debug malloc usage info\n\nChange-Id: I010fdc6c228a5f64edfef1c267cde7a2eef5190b\n"
    },
    {
      "commit": "baa4899d386a79a23a85762e02c1c5e7faa53778",
      "tree": "1dda201a320ece4b88790fb7418bba022d9bc552",
      "parents": [
        "48cedda02a9874d59b2b3652d0427abce7fedaab"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Jul 13 11:15:21 2016 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Jul 14 09:07:56 2016 -0700"
      },
      "message": "Convert malloc_debug from Android.mk to Android.bp\n\nChange-Id: I60ad376d222a92a29263c2804dcd1bd0d3c383d0\n"
    },
    {
      "commit": "7bd01783a830f72c1245c262a7fd9a199e90aed1",
      "tree": "5bd657e6c452d5f9d81a6c9b156ee748c8a8f070",
      "parents": [
        "a0e205e3b4f7993affb864260e924ce9f20573d0"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 20 12:30:58 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jul 08 14:05:17 2016 -0700"
      },
      "message": "Add the record alloc option.\n\nThis option adds the ability to record all of the allocation requests\nand dump them to a file when a signal is sent to the process.\n\nIncluded in this change, redo the option processing to add a new\nstring option.\n\nBug: 27747898\n\nChange-Id: Ida043362e38b5eb1d459c99db9c2581015dab366\n"
    },
    {
      "commit": "eab48032901e1555fae8e52ffb9571bcfcc466a9",
      "tree": "214ac062c703009a2af79ed9aa7033b8f9edcc87",
      "parents": [
        "d1c96e21593fe5ff4c2989b9902036c65532b4fd"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 25 13:04:29 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 25 13:34:54 2016 -0700"
      },
      "message": "Update documentation for malloc debug.\n\nAdd a new document that describes the previous version of malloc debug.\n\nAdd a small update to the current documentation to indicate it only\napplies to N and later.\n\nChange-Id: Ief74c253ba79018777aa688bde7f5b35319fa4d4\n"
    },
    {
      "commit": "9f0aab88a881303be9babb273063a9ad6a1ee643",
      "tree": "68d4c888bbbaf54c1bbc4bd5827bb69b82d3f88b",
      "parents": [
        "0f93237db72d2d6d3fc3c491fd9f8641ad255d50",
        "62e3a078aa7b156139b1a2cec77e1a84eb10c5a4"
      ],
      "author": {
        "name": "Chih-hung Hsieh",
        "email": "chh@google.com",
        "time": "Wed May 04 00:37:58 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed May 04 00:37:58 2016 +0000"
      },
      "message": "Merge \"Fix google-explicit-constructor warnings.\""
    },
    {
      "commit": "62e3a078aa7b156139b1a2cec77e1a84eb10c5a4",
      "tree": "b37425943e0cd7284b319d6cad98bd71dcfdc8bb",
      "parents": [
        "9ee905f12fa0aeb4ae0df708e15d2ffcfaf58000"
      ],
      "author": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "committer": {
        "name": "Chih-Hung Hsieh",
        "email": "chh@google.com",
        "time": "Tue May 03 12:08:05 2016 -0700"
      },
      "message": "Fix google-explicit-constructor warnings.\n\nBug: 28341362\nChange-Id: I84effbdfa1b9b39328a909b7f70fe17e7ee316c8\n"
    },
    {
      "commit": "c7bfe2ee564e5a3cb22d8b6b6c48f4584ccfb374",
      "tree": "7abc6534349deaec677abb9eddfd464350407bfc",
      "parents": [
        "23e29e3be03d5226544774e2a64c924bae82e07b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 26 16:07:29 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 26 16:43:28 2016 -0700"
      },
      "message": "Update documentation to work with gitiles.\n\nRemove the \u003cpre\u003e and \u003ci\u003e and \u003cb\u003e and use the native markdown versions\nof these.\n\nBug: 27902359\nChange-Id: Id20190d10114610d126a20b14b392ca467638f96\n"
    },
    {
      "commit": "97fd7d95f5abd3fbc3274b2591883ecdd9cc03cc",
      "tree": "71e473fe2bd617df202a64db25880adb6e6b5d2f",
      "parents": [
        "1c3a5d87f2844b637f48f43ca22a6ac5e4cbf9c9"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 20 16:44:39 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 20 16:44:39 2016 -0700"
      },
      "message": "Change pointer to allocation in unit tests.\n\nI changed the output from \"pointer\" to \"allocation\" for allocation\nmismatches. I forgot to update the tests.\n\nBug: 28218530\nChange-Id: I3278cb1dd17fb50ff7448c00e069c1af68ce5a57\n"
    },
    {
      "commit": "96d961cf0b573984f59ecaa916033c1022be9498",
      "tree": "a64054a84886b0e340585ac2f4f4d38c8a1c8c41",
      "parents": [
        "2c32c20fa9c730d4357b036f898c84e288ecb290",
        "713a8e36f863c27736ad4f29a5fd9bf84be83aaf"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 19 17:51:41 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Apr 19 17:51:42 2016 +0000"
      },
      "message": "Merge \"Add malloc debug documentation.\""
    },
    {
      "commit": "713a8e36f863c27736ad4f29a5fd9bf84be83aaf",
      "tree": "8689621c38a95bc7dc846bc6636069dac9403e22",
      "parents": [
        "322d6cfb33c817f46ea853de51f0a006cb874bef"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Mar 18 14:29:51 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 15 14:17:44 2016 -0700"
      },
      "message": "Add malloc debug documentation.\n\nBug: 27902359\nBug: 28218530\nChange-Id: I4b0e83cba7a9a0da745599ad546559a2b30e70c5\n"
    },
    {
      "commit": "ea26b33248663a836d2f0719cb4e46967b648fe2",
      "tree": "30c13529fed73bab313373ba3ad5a10c9795ced8",
      "parents": [
        "668fddb3ba36b52a16381513b1a0a42d9dd910e1"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 15 14:13:52 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 15 14:13:52 2016 -0700"
      },
      "message": "Small fixes to malloc debug.\n\n- Change the printed name from pointer to allocation to be explicit about\n  what is wrong.\n- Change the signal to be SIGRTMAX - 19 instead of SIGRTMIN. This should\n  prevent problems if we have to reserve other real time signals.\n\nBug: 28218530\nChange-Id: Ic7d9c471929264d8e47bafaffc16e099840c9e71\n"
    },
    {
      "commit": "55a89a48f41da349735627c2ae8985895955b1ca",
      "tree": "c946bd9b7e1353787f278e5face49cae5d8f238d",
      "parents": [
        "03a16d3db7c5fff733d28250212821ec2ff5eccd"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Apr 07 17:14:53 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 12 15:36:53 2016 -0700"
      },
      "message": "Small refactor.\n\n- Move all ScopedDisableDebugCalls into the debug_XXX calls. This avoids\nany issues that might arise where every part of the code needs to properly\nguard anything that might allocate. Instead everything is already guarded.\n- Add a pointer to debug_data in all of the XXData classes. This avoids\ncalling individual functions passing in the debug_data pointer.\n- Flip the NO_HEADER_OPTIONS to an explicit HEADER_OPTIONS list since fewer\noptions actually require a header.\n- Move the extern of g_debug to the DebugData.h header.\n\nChange-Id: Ia213a391b4a44d9ce122a709d09fe4f1b5426f36\n"
    },
    {
      "commit": "d0919623a2ef56107590eca9a9522a250fb8bd4a",
      "tree": "b0e66ab45ca64f3fb90e03205ebd814f5c55c4f0",
      "parents": [
        "8d0af0bf8004c65f13b985643004a915d7e382eb"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Mar 15 22:39:39 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Mar 16 17:38:08 2016 -0700"
      },
      "message": "Fix race in malloc debug option free_track.\n\nThe free track mechanism could fail if, at the same time a free occurs,\nanother thread is trying to free and verify the same allocation. This\ndoesn\u0027t work if the freed allocation is added to the list and we still\ndo work on it. The fix is to only add to the free list when we are done\nwith the allocation.\n\nAlso fix a problem where the usable size is computed incorrectly because\ntwo of the arguments where reversed.\n\nIn addition, add a check that the allocation being verified has the correct\ntag before trying to check the body of the allocation.\n\nAdd a test to catch the original failure.\n\nAdd a test for the tag being different.\n\nBug: 27601650\nChange-Id: Ie9200677d066255b8e668a48422f23f909f4ddee\n"
    },
    {
      "commit": "a4b14252752d14454afb48feb3272e8689e3a66d",
      "tree": "939fc4e7324147dd97d0e54d9383bb1758ec8848",
      "parents": [
        "0e00c168cea9c951df5ce47d25d8f042b9cc566a"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 14 15:29:46 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Mar 14 15:34:22 2016 -0700"
      },
      "message": "Fix problem where unknown option is not an error.\n\nIf the first option is found, then any unknown options are simply\nignored, but do not produce an error. Fixed this so that each\noption found is actually verified to exist.\n\nBug: 27620263\nChange-Id: If58732df3285eeae72188162c505e0e202fada8c\n"
    },
    {
      "commit": "7877df66c27c8cd27dcb809e5cbfdc38b798e5cb",
      "tree": "d77a82183c705cb4a0e2ebf290de217d86bc8af6",
      "parents": [
        "9567c7b82cba21d3046bab5c9b1fe4e73f2629bf"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 10 13:01:27 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 10 14:53:02 2016 -0800"
      },
      "message": "malloc_debug: fix multiplication overflow in debug_calloc\n\nThe over flow check for nmemb * bytes in debug_calloc is incorrect,\nuse the builtin overflow functions to check for multiplication and\naddition overflow.\n\nChange-Id: I3f1c13102621bc5380be1f69caa88dba2118f3cb\n(cherry picked from commit 239838608dbe9917acddfe5a51d92350a4c8e135)\n"
    },
    {
      "commit": "9567c7b82cba21d3046bab5c9b1fe4e73f2629bf",
      "tree": "7804baf7adca1beafa840fdb020e1ffc50cd48be",
      "parents": [
        "baa7c6f307569ec3ed17688495e29000cd8bc617"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 09 17:56:14 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 10 14:53:02 2016 -0800"
      },
      "message": "malloc_debug: round 0 byte allocations up to 1 byte\n\n0 byte allocations can cause problems if they are immediately followed\nby another allocation with no header, as both allocations will have the\nsame address.  Treat 0 byte allocations as 1 byte allocations so that\ndebug_iterate will return separate addresses for them.\n\nBug: 27578580\nChange-Id: Ia8dc3481fa7062391e9b3ae58a36e8d47e7ee557\n(cherry picked from commit 15af478080cfbfa800fb8172fdf70a84075925e3)\n"
    },
    {
      "commit": "baa7c6f307569ec3ed17688495e29000cd8bc617",
      "tree": "ae68b98d1ec02f896f0d7af99012710c1f3dee74",
      "parents": [
        "ffd19ee64d89d5a9ba3757e8ecb1017e0ec5f135"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Mar 09 16:33:44 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Mar 10 14:53:02 2016 -0800"
      },
      "message": "malloc_debug: iterate: use usable_size\n\nmalloc_iterate with malloc debug enabled was returning allocation sizes\nusing the requested size instead of usable size.  If anything wrote\npointers above the requested size but below the usable size, those\npointers would be invisible to libmemunreachable and referenced\nallocations could be reported as a leak.\n\nBug: 27107100\nChange-Id: I6b19fd631f68ce93b3aee408cc3d296ec457bd01\n(cherry picked from commit b23c6606d2326f8835fc7fc35b23ff7ee5a48f48)\n"
    },
    {
      "commit": "549e52200b6af3c33cba7ef759ea98b49fa40082",
      "tree": "bf86a923f9e99668414f03f47b41f5493ef33072",
      "parents": [
        "eb727252f22bd533ebfd40637c0718fdc9946221"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 22 19:23:26 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 26 17:02:17 2016 -0800"
      },
      "message": "Move hard-coded values to constants.\n\nChange all of the hard-coded config values to be defined constants.\nAlso make sure to use these constants in the usage output.\n\nBug: 26739265\nChange-Id: I597a6d71279a2df9cc7e98c42ac70224261bac99\n"
    },
    {
      "commit": "0e2a0265798ed47cbbf6977f0f84cf81d93173a6",
      "tree": "888f3e9a96e38769cddae99ce0b9eb2881aa5c4d",
      "parents": [
        "f2d516b3f9ef901991387ee473140ea24feaab48"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 22 19:14:26 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Feb 22 19:14:26 2016 -0800"
      },
      "message": "Fix wrong guard values for 64 bit.\n\nI added the code to force alignments of 8 for 32 bit and 16 for 64 bit,\nbut I missed a couple of tests that failed due to this change. Fix the\nfailing tests.\n\nBug: 26739265\nChange-Id: Ice9932d1419e59c07483c4c9fcdb84970844f0a6\n"
    },
    {
      "commit": "f499dc91e774db4cb9d21f9a7c34704fa9b7ed39",
      "tree": "ed129781e91ae6015f625930c4c5fdec19265356",
      "parents": [
        "b539baab398ce20f9add5d6dfbadfdc7abdeb970"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 19 18:13:29 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 19 18:13:29 2016 -0800"
      },
      "message": "Fix incorrect size of array.\n\nWhen using sscanf and \"%4s\", the array passed in must include space for\na nul terminator.\n\nBug: 26739265\nChange-Id: I0140a6100ca370666ae61689087ba41b4914789d\n"
    },
    {
      "commit": "d75d4bea54a788dada3f2538a33cc491e4c56ed4",
      "tree": "2afb4a19e32539b11eda85948225ef456b4cf638",
      "parents": [
        "2c75991359df165ca7cc7a6213fb227c0b5ed87c"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Mon Feb 08 14:29:03 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 16:09:17 2016 -0800"
      },
      "message": "malloc_debug: reread /proc/pid/maps when entry is missing\n\nReread /proc/pid/maps on demand in case a new library has been loaded.\n\nChange-Id: Iac8109b3e6a07bf02c38300b21eecabf4bcd54df\n"
    },
    {
      "commit": "2c75991359df165ca7cc7a6213fb227c0b5ed87c",
      "tree": "4dc02df00481962e80acb454ee857fd5b2f8b2d4",
      "parents": [
        "2d4721c0c57fe2f7c1e1b40df4763a561b3cf856"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 05 16:17:39 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 16:09:17 2016 -0800"
      },
      "message": "Add backtrace_string and export to libmemunreachable\n\nAdd backtrace_string to convert a malloc_debug backtrace to a string.\nAlso move the backtrace functions to libc_malloc_debug_backtrace so that\nlibmemunreachable can reuse them.\n\nChange-Id: I5ad67001c0b4d184903c762863a8588181d4873b\n"
    },
    {
      "commit": "2d4721c0c57fe2f7c1e1b40df4763a561b3cf856",
      "tree": "256b5519e32df5b56b6bc6a343f5ff50d16ddea0",
      "parents": [
        "869691c6f7691dd5bf343617aa185c32e0d3d160"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Tue Feb 02 11:57:54 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 16:09:16 2016 -0800"
      },
      "message": "Export malloc_backtrace\n\nChange-Id: Ic1adb4dfd86b9ca698443a36263a3df2c91edda3\n"
    },
    {
      "commit": "869691c6f7691dd5bf343617aa185c32e0d3d160",
      "tree": "aa0cb5619aa90a899a31ca0ba250cb180c5d1302",
      "parents": [
        "aca201358b910e5a4b925c639902387fbdfd9016"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Jan 29 12:48:18 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Thu Feb 18 15:05:38 2016 -0800"
      },
      "message": "Export malloc_iterate and friends\n\nExport malloc_iterate, malloc_enable, and malloc_disable to be used by\nlibmemunreachable.\n\nChange-Id: I08a50349af82a95d096b6b4cbac37ababe4b9b06\n"
    },
    {
      "commit": "598cb89790ba93edbb392c567ecda32b39d64ff1",
      "tree": "28f8dc579b1462a232620d180ab5f32a88f687f4",
      "parents": [
        "2de48bc809bba48a7f209e209b3822bad010166f",
        "7a28a3cf1f8df36e30724e8b4021cddde0596118"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Feb 17 20:38:02 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Feb 17 20:38:02 2016 +0000"
      },
      "message": "Merge \"malloc_debug: reset TrackData mutex after fork\""
    },
    {
      "commit": "72df6708c829a4c6494936fdfbda6dc7e68e647b",
      "tree": "17ede0d54b6f50c3598a3fcec56f50754067690d",
      "parents": [
        "72bca4b4105e24058f3f2eca024382bedb122a30"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Feb 11 15:51:31 2016 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Feb 12 17:30:30 2016 -0800"
      },
      "message": "Fix the default alignment of the allocations.\n\nIn order to enforce this constraint:\n\nThe pointer returned if the allocation succeeds shall be suitably\naligned so that it may be assigned to a pointer to any type of object\nand then used to access such an object in the space allocated.\n\nForce all allocations on 32 bit systems to have 8 byte alignment,\nand all allocations on 64 bit systems to have 16 byte alignment.\n\nAdd a test to verify that the allocator returns the correct alignments.\n\nBug: 26739265\nChange-Id: I9af53279617408676b94e4ec6481b3ed7ffafc6a\n"
    },
    {
      "commit": "7a28a3cf1f8df36e30724e8b4021cddde0596118",
      "tree": "2add78d5dcf97d4cb4f360fba7b512656be70313",
      "parents": [
        "9750a77b31f2fc6d548a02b3a9750c2794648fea"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Sun Feb 07 22:51:15 2016 -0800"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Fri Feb 12 16:41:14 2016 -0800"
      },
      "message": "malloc_debug: reset TrackData mutex after fork\n\nAdd a pthread_atfork handler to malloc_debug to lock the TrackData mutex\nduring fork and reset it in the child.  Ensures that the TrackData is\nconsistent when forking from a multi-threaded process, and that the\nmutex is in a defined state in the child.\n\nChange-Id: I0dfed30045a28551217ceac227d33b2e18894932\n"
    }
  ],
  "next": "701bb65511aed14da6c51179619785e5706fa5a6"
}
