)]}'
{
  "log": [
    {
      "commit": "51a22a12ab370933a35463f5c81223132ec64dcb",
      "tree": "83033d1672090d93a22d349669bbe9159322f4e8",
      "parents": [
        "a0db46418757dd1b399acb97ff42083cc274e8ae"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Fri Aug 08 16:57:15 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Aug 11 09:22:48 2014 -0700"
      },
      "message": "Label pages mapped by linker_allocator\n\nChange-Id: I7e0bf29bc1a480e9be0d1ae573ca1063d90d82ff\n"
    },
    {
      "commit": "2f9c6e38b8f59ea6e53e95e062e04dc987ac67f3",
      "tree": "357f52fa44154578044df31cf4ee3e281d206201",
      "parents": [
        "169e2bf6bd092ea3599cfe3426766988ec66658a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 17 15:09:17 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 17 15:09:17 2014 -0700"
      },
      "message": "Fix private/bionic_name_mem.h build breakage.\n\nChange-Id: I8fe9c63dbbb5911721ca56791c0bff4bdf403314\n"
    },
    {
      "commit": "d7453860a6b06e7d4a960c20792ce6f0b6cc5f3a",
      "tree": "eb16bdf461a93257bf1f16a7e7eabb36f52a4e46",
      "parents": [
        "43363ab7202a935e12cf6a38d32a48433bdc3705"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 17 14:26:33 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 17 14:26:33 2014 -0700"
      },
      "message": "Remove non-standard prctl constants from \u003csys/prctl.h\u003e.\n\nAlso remove __bionic_name_mem which has exactly one caller, and is only\never expected to be used in this one place.\n\nChange-Id: I833744f91e887639f5b2d1269f966ee9032af207\n"
    },
    {
      "commit": "9b5235d74e794d29fa912fe95ca3d5ec488dd371",
      "tree": "1cc132c801f60ba36a48af810bae05fefd4e1b02",
      "parents": [
        "3dbc2fe33e7a1c0e545f7762d3c7a98429c5a82b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 03 18:47:17 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jun 03 18:47:17 2014 -0700"
      },
      "message": "Hide dlmalloc symbols.\n\nWe need to leave dlmalloc_trim and dlmalloc_inspect_all exposed for\nthe VM, but if we\u0027re seriously looking at other malloc implementations,\nthat\u0027s something we\u0027re going to have to fix.\n\nBug: 11156955\nChange-Id: If85156c280044f1616c09a3c50ba674aaf0e8d3a\n"
    },
    {
      "commit": "623b0d05bd924e7fa3c155492695123c87c3a2b1",
      "tree": "8fa47b2bf2fb7abe4b168fb1009108cdd762f6e3",
      "parents": [
        "089c7c921786ff6255526feec96552fc16ada7f4"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Wed May 14 23:11:05 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Thu May 15 13:05:21 2014 -0700"
      },
      "message": "Register _cleanup function with atexit\n\n * Register cleanup function with atexit\n   instead of calling it explicitly on\n   exit()\n * abort() no longer calls _cleanup:\n   Flushing stdio buffers on abort is no\n   longer required by POSIX.\n * dlmalloc no longer need to reset cleanup\n   (see above)\n * Upstream findfp.c makebuf.c setvbuf.cexit.c\n   to openbsd versions.\n\nBug: 14415367\nChange-Id: I277058852485a9d3dbb13e5c232db5f9948d78ac\n"
    },
    {
      "commit": "7f4074d17d0e22e5e18e472c7e099490df8efaf2",
      "tree": "49697bf0f46ae1e82e604ad42c35f97074eebe2d",
      "parents": [
        "6771b9cef635f0da98932a1f0f877a07257ca088"
      ],
      "author": {
        "name": "Colin Cross",
        "email": "ccross@android.com",
        "time": "Wed Aug 07 15:01:55 2013 -0700"
      },
      "committer": {
        "name": "Colin Cross",
        "email": "ccross@google.com",
        "time": "Thu Aug 08 00:42:39 2013 +0000"
      },
      "message": "bionic: name malloc\u0027d regions\n\nUse the new __bionic_name_mem function to name malloc\u0027d memory as\n\"libc_malloc\" on kernels that support it.\n\nChange-Id: I7235eae6918fa107010039b9ab8b7cb362212272\n"
    },
    {
      "commit": "61e699a133a4807fe878a6cb0d7190d7c96e21f8",
      "tree": "12dd46e7f8e5f7172a3fe0fd9075fa929cbb1001",
      "parents": [
        "5cde15eb17f4ddc0949c0cbd38a46e6c0bad7019"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:05:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 12 14:14:53 2013 -0700"
      },
      "message": "Clean up abort.\n\n* A dlmalloc usage error shouldn\u0027t call abort(3) because we want to\n  cause a SIGSEGV by writing the address dlmalloc didn\u0027t like to an\n  address the kernel won\u0027t like, so that debuggerd will dump the\n  memory around the address that upset dlmalloc.\n\n* Switch to the simpler FreeBSD/NetBSD style of registering stdio\n  cleanup. Hopefully this will let us simplify more of the stdio\n  implementation.\n\n* Clear the stdio cleanup handler before we abort because of a dlmalloc\n  corruption error. This fixes the reported bug, where we\u0027d hang inside\n  dlmalloc because the stdio cleanup reentered dlmalloc.\n\nBug: 9301265\nChange-Id: Ief31b389455d6876e5a68f0f5429567d37277dbc\n"
    },
    {
      "commit": "0d787c1fa18c6a1f29ef9840e28a68cf077be1de",
      "tree": "3f8efc05d80658c9be48513238104a5de01a9951",
      "parents": [
        "014c75c78bdcad8acde8d0abb2450aa1f78e1a1f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Apr 04 13:46:46 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 05 11:24:19 2013 -0700"
      },
      "message": "Make abort messages available to debuggerd.\n\nThis adds __libc_fatal, cleans up the internal logging code a bit more,\nand switches suitable callers over to __libc_fatal. In addition to logging,\n__libc_fatal stashes the message somewhere that the debuggerd signal handler\ncan find it before calling abort.\n\nIn the debuggerd signal handler, we pass this address to debuggerd so that\nit can come back with ptrace to read the message and present it to the user.\n\nBug: 8531731\nChange-Id: I416ec1da38a8a1b0d0a582ccd7c8aaa681ed4a29\n"
    },
    {
      "commit": "4ace92c62ada583b220836d76de2cfcb78d4d48d",
      "tree": "a1d013c340c85963ff30e029207923d5811b6d6a",
      "parents": [
        "7a29f404e11d3346e79154b8e8d72a3215febced"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 02 17:41:14 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Apr 02 17:41:14 2013 -0700"
      },
      "message": "Stop using unreasonable numbers of map entries.\n\nBug: 8460659\nChange-Id: Ib0ee71e3cf61e122d0449c9d8a4e4670a7d7129a\n"
    },
    {
      "commit": "65a8eb606f2104f4b14514fa2a89d2867167793b",
      "tree": "f31c266db4539b3ce21e6c6baca1ee4bc858f10d",
      "parents": [
        "48f25cef45f8f68567d528a5d833ed45cb760bec"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 25 13:48:41 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 25 13:48:41 2013 -0700"
      },
      "message": "Clarify the dlmalloc USAGE_ERROR.\n\nBug: 8468088\nChange-Id: I1ff6d51ec17fc74ef56229aa76d2986cbd662874\n"
    },
    {
      "commit": "8f2a5a0b40fc82126c691d5c30131d908772aab7",
      "tree": "0b29a5dc82395c076387edb5af9ca271a91264c0",
      "parents": [
        "e23ed8c6441389a79c6504295184f7249e01a197"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 15:30:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:12:58 2013 -0700"
      },
      "message": "Clean up internal libc logging.\n\nWe only need one logging API, and I prefer the one that does no\nallocation and is thus safe to use in any context.\n\nAlso use O_CLOEXEC when opening the /dev/log files.\n\nMove everything logging-related into one header file.\n\nChange-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58\n"
    },
    {
      "commit": "ce4cf90d7993ec7b9abc79bc86ede4d8758a49ab",
      "tree": "d3ac7b81d9c35a83bec417ea3c6d2327a6cc0d1f",
      "parents": [
        "02f96b9db0242711fe1dfe0713c0c4e698561da5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 14:00:09 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jan 22 14:24:52 2013 -0800"
      },
      "message": "Use the new non-allocating logging for dlmalloc failures.\n\nChange-Id: I88afe0201ee5766a295fc5a9e710fba9d6e0d363\n"
    },
    {
      "commit": "8921060253f95fa77dbfe96ddaab5a39c446a49e",
      "tree": "e772aa74be62c50a61c47671aa5dd79def2f30d5",
      "parents": [
        "69c89942db2ed472c71aa84903d0259cc84aa074"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 11 15:25:44 2013 -0800"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Jan 11 17:42:17 2013 -0800"
      },
      "message": "Name anonymous mmap mallocs.\n\nChange-Id: Icc53ba1eecb8445210623826d8e99a611d686f7f\n"
    },
    {
      "commit": "2c344d3631eaad4bcfec821ea0e9f158c537a686",
      "tree": "29c4ae1c635ca8936791dd237a2ce3448d10fc7f",
      "parents": [
        "4f90a0932c087e4bb13dab2d30a424c04c1f9f80"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 28 15:53:10 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Tue Aug 28 15:53:10 2012 -0700"
      },
      "message": "Revert \"Revert \"Upgrade to dlmalloc 2.8.5.\"\"\n\nThis reverts commit f72ee269274170cd46af2844a2fe88767fb6e43c.\n"
    },
    {
      "commit": "f72ee269274170cd46af2844a2fe88767fb6e43c",
      "tree": "aaa946e5d3aa1aff619876098a17714bdacb571e",
      "parents": [
        "78a3069f827386df6166ccf9366a89be782f1dde"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 22 12:07:33 2012 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Wed Aug 22 12:07:33 2012 -0700"
      },
      "message": "Revert \"Upgrade to dlmalloc 2.8.5.\"\n\nThis reverts commit 999089181ef60bb67e1a49f2cf6f4ec608a7caf8.\n"
    },
    {
      "commit": "999089181ef60bb67e1a49f2cf6f4ec608a7caf8",
      "tree": "68b426388adc78040949e65282fd623d08b7644d",
      "parents": [
        "9417a80e48d3bba4bea814178aaa79b905ebab8c"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 17 17:28:15 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 14:12:20 2012 -0700"
      },
      "message": "Upgrade to dlmalloc 2.8.5.\n\nMove dlmalloc code to upstream-dlmalloc to make pulling upstream changes\neasier.\nDeclare pvalloc and malloc_usable_size routines present in malloc.h but with\nmissing implementations. Remove other functions from malloc.h that have\nno implementation nor use in Android.\n\nChange-Id: Ia6472ec6cbebc9ad1ef99f4669de9d33fcc2efb4\n"
    },
    {
      "commit": "ec2ab73b87bb0c6da24cfc86dbc2d79b9c923da1",
      "tree": "ec2466c16de41ca9399ec66187624e8518cdd25f",
      "parents": [
        "e1dd3c287ba836281de0197670018bd9bbfbd62b"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue Jun 19 07:11:38 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue Jun 19 07:11:38 2012 -0700"
      },
      "message": "Minor tweak to get memory around corrupted heap chunks dumped.\n\nChange-Id: I8f72c5c7e23960b13fc53e2354cd74aca8aac3c0\n"
    },
    {
      "commit": "c84ff11dad26435dc5760bceda18e8f1175a6061",
      "tree": "b98c5e82098b71100b9ccf082b9913628d77142a",
      "parents": [
        "08e72d0161e39e99ff1003bf1ce894f37d7b7eb4"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Thu May 24 16:56:53 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Thu May 24 17:06:43 2012 -0700"
      },
      "message": "Print the corrupted address passed to free().\n\nFor example:\n\n@@@ ABORTING: INVALID HEAP ADDRESS IN dlfree addr\u003d0x5c3bfbd0\nFatal signal 11 (SIGSEGV) at 0xdeadbaad (code\u003d1), thread 2942\n\nThe addr\u003d0x5c3bfbd0 part is new.\n\nChange-Id: I8670144b2b0a3a6182384150d762c97dfee5452f\n"
    },
    {
      "commit": "eaae81082cb76efa43a2c3fb57997b28ca270634",
      "tree": "9681625e91934782d14cc848ea9acb06995a3a67",
      "parents": [
        "891966d0209b17d27d8d1f7a94bc6404be93f7bf"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Wed Mar 21 15:47:12 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Wed Mar 21 15:47:12 2012 -0700"
      },
      "message": "Initialize mspace-\u003eleast_addr properly in the mmap path.\n\nBUG: 6206963\nChange-Id: Id2ab580246de50a4511b56a734a7bece98fb945c\n"
    },
    {
      "commit": "85aad909560508410101c18c6ecc6633df39c596",
      "tree": "1da341473c2090fa35afc5d22351603bd49ac79c",
      "parents": [
        "a5cb76bca00b1ce44a04687fb179809c12ea9cd3"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Wed Dec 14 20:50:01 2011 -0800"
      },
      "committer": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Wed Dec 14 20:55:43 2011 -0800"
      },
      "message": "Add the posix_memalign(3) function to bionic\n\nThe posix_memalign(3) function is very similar to the traditional\nmemalign(3) function, but with better error reporting and a guarantee\nthat the memory it allocates can be freed.  In bionic, memalign(3)\nallocated memory can be freed, so posix_memalign(3) is just a wrapper\naround memalign(3).\n\nChange-Id: I62ee908aa5ba6b887d8446a00d8298d080a6a299\n"
    },
    {
      "commit": "c51871d4b22425b32ec40c060c39d6b6fa4406f6",
      "tree": "a6ab54ad614fc61af9377d9242c206dd3aaff2f6",
      "parents": [
        "01eb7f72434830bb14cec906d885d2b7ee40d53b"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 06 19:02:15 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 06 19:02:15 2011 +0200"
      },
      "message": "Really fix the build.\n\nlibcutils/mspace.c includes libc/bionic/dlmalloc.c, we need to\ntake care of the fact that any internal C library function cannot\nbe used from it.\n\nChange-Id: I0bc81ae090b7ac2d464f26b97fc6b94a08cdad9c\n"
    },
    {
      "commit": "a4824467c33c5a59317f777a54c60e3b339e4966",
      "tree": "c3e76fe6290976c907e6a27bc81a08e9780fc786",
      "parents": [
        "b73b6783a595cf4b1cef6463c23317a8b417f1e9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 06 17:54:35 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 06 17:54:35 2011 +0200"
      },
      "message": "Fix broken build\n\nChange-Id: Ia46b50aec51a55434c8828a73e07f4732f8f6c1c\n"
    },
    {
      "commit": "7708a89c60e7b024d31c48c8034932c5e9f0aceb",
      "tree": "d74fbfa8efa44b57fe91e768b4bea8834c49dd31",
      "parents": [
        "2f5c6d2d663591b0b5cff9f7e90f58f12a5967eb"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Thu Jun 30 18:32:03 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Tue Jul 05 19:53:53 2011 +0200"
      },
      "message": "libc: Add logcat error message for memory corruption\n\nOur dlmalloc implementation currently calls abort() when it detects\nthat the heap is corrupted, or that an invalid pointer is passed to\none of its functions.\n\nThe only way to detect this is because abort() will force-fully\ncrash the current program with a magic fault address of \u00270xdeadbaad\u0027.\n\nHowever, this is not really well documented, and a frequent topic\non the android-ndk forum (among others).\n\nThis change makes our dlmalloc code dump a simple message to the\nlog just before the abort() call (and hence before the stack trace)\nto better help identify the problem.\n\nChange-Id: Iebf7eb7fe26463ecadfaca8f247d237edb441e3c\n"
    },
    {
      "commit": "b74ceb25aae555570df64fa4d4076272733a9a20",
      "tree": "3bf49e716722b67f4b0f0bcb391156bf29fa6ad0",
      "parents": [
        "e8870ffc965d553a885f63b26e724da279728b72"
      ],
      "author": {
        "name": "Vladimir Chtchetkine",
        "email": "vchtchetkine@google.com",
        "time": "Tue Nov 17 14:13:38 2009 -0800"
      },
      "committer": {
        "name": "Vladimir Chtchetkine",
        "email": "vchtchetkine@google.com",
        "time": "Wed Nov 18 10:36:25 2009 -0800"
      },
      "message": "Split libc_debug.so into two .so modules loaded on demand from libc.so\n\nThis change is intended to eliminate need to replace libc.so with libc_debug.so in order to enablememory allocation debugging.\nThis is also the first step towards implementing extended memoryallocation debugging using emulator\u0027s capabilities in monitoring memory access.\n"
    },
    {
      "commit": "f30dae9cf452e4308a34450b2a48eb6602936976",
      "tree": "bc018510b61563dbd2f4479ce9a21d98d2abe251",
      "parents": [
        "90ec5f2a3f581927ffef55733e8d531890fdc90e"
      ],
      "author": {
        "name": "Barry Hayes",
        "email": "bhayes@google.com",
        "time": "Tue May 26 10:33:04 2009 -0700"
      },
      "committer": {
        "name": "Barry Hayes",
        "email": "bhayes@google.com",
        "time": "Tue Jun 02 14:48:59 2009 -0700"
      },
      "message": "Add mspace_merge_objects\n"
    },
    {
      "commit": "a27d2baa0c1a2ec70f47ea9199b1dd6762c8a349",
      "tree": "defd1cc07d16ad2f3b21154114e092d11c94c5bb",
      "parents": [],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Oct 21 07:00:00 2008 -0700"
      },
      "message": "Initial Contribution\n"
    }
  ]
}
