)]}'
{
  "log": [
    {
      "commit": "1e980b6bc8315d00a07312b25486531247abd98c",
      "tree": "539f2c0c63fca27d5eb6ba184d658bb0e11a32d9",
      "parents": [
        "e4ca88d9fa8757e4fb4056fcafa5bc15b406a2fd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 17 18:36:06 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jan 18 22:20:06 2013 -0800"
      },
      "message": "Fix the duplication in the debugging code.\n\nWe had two copies of the backtrace code, and two copies of the\nlibcorkscrew /proc/pid/maps code. This patch gets us down to one.\n\nWe also had hacks so we could log in the malloc debugging code.\nThis patch pulls the non-allocating \"printf\" code out of the\ndynamic linker so everyone can share.\n\nThis patch also makes the leak diagnostics easier to read, and\nmakes it possible to paste them directly into the \u0027stack\u0027 tool (by\nusing relative PCs).\n\nThis patch also fixes the stdio standard stream leak that was\ncausing a leak warning every time tf_daemon ran.\n\nBug: 7291287\nChange-Id: I66e4083ac2c5606c8d2737cb45c8ac8a32c7cfe8\n"
    },
    {
      "commit": "326ea5413d18ea019cd1bda415ce428f7bdcafd2",
      "tree": "630469ff443d522e356418bfda081452d28606f6",
      "parents": [
        "db79e827ebcb077ebaa6d6c96915c5bffba9a0ca"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Dec 04 13:55:19 2012 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Dec 04 15:27:30 2012 -0800"
      },
      "message": "clean up FORTIFY_SOURCE handling.\n\nAvoid duplicating huge chunks of code.\n\nChange-Id: Id6145cdfce781c5ffba2abaaa79681d25a7ab28f\n"
    },
    {
      "commit": "8b11c4cec21dc8eedd153866ce738614cfae57e6",
      "tree": "ee313cc132aeda193792e290d1e4749f8f2e1712",
      "parents": [
        "158ad015c2eb8f0a7f0e91db706ca363e634f407"
      ],
      "author": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Thu Jun 07 17:45:06 2012 -0700"
      },
      "committer": {
        "name": "Geremy Condra",
        "email": "gcondra@google.com",
        "time": "Fri Jun 08 12:14:48 2012 -0700"
      },
      "message": "Adding event logging to libc.\n\nI\u0027ve basically just copied the relevant bits out of liblog and\nEventLog.cpp. While this will let us do the uid logging we want\nto address the concerns in 245c07027f78565858dd489eb0d94c3d48743e9d\nit doesn\u0027t give us much else.\n\nChange-Id: Icac6ff20bc0a3ade5927f6f76fedffe1ae6f8522\n"
    },
    {
      "commit": "c99376836021e6623516cf38d42259d38e1a480f",
      "tree": "369350c5eb46452d6c693d8d6aa4286012dccd51",
      "parents": [
        "368ee1e4d65c555fdb0fa4b3a91d75a397936908"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Jul 06 12:58:56 2011 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Jul 06 12:58:56 2011 -0700"
      },
      "message": "Revert \"Revert \"libc: Add logcat error message for memory corruption\"\"\n\nThis reverts commit 368ee1e4d65c555fdb0fa4b3a91d75a397936908.\n"
    },
    {
      "commit": "368ee1e4d65c555fdb0fa4b3a91d75a397936908",
      "tree": "bab57744349e2a22c98a07c83d130983d0df5e9c",
      "parents": [
        "877923d369c953d601afd461a04854a27ec720fd"
      ],
      "author": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Jul 06 16:51:54 2011 +0100"
      },
      "committer": {
        "name": "Mathew Inwood",
        "email": "mathewi@google.com",
        "time": "Wed Jul 06 16:51:54 2011 +0100"
      },
      "message": "Revert \"libc: Add logcat error message for memory corruption\"\n\nThis fixes the build.\n\nThis reverts commit 7708a89c60e7b024d31c48c8034932c5e9f0aceb.\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": "6c8a2f2a5bc8d612ee953f528f2b5eb35983656a",
      "tree": "7dd45d3e3162220578e93a6cb7244b4209b1c7c5",
      "parents": [
        "038fbae518e904c7aba64779714a22dbeeb90887"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jun 10 23:34:24 2010 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jun 11 13:49:09 2010 -0700"
      },
      "message": "libc: remove cutils dependencies\n\nWe simply copy the stuff we need from cutils headers.\n\nA future patch will change cutils to include the private \u003cbionic_atomic_inline.h\u003e\n\nChange-Id: Ib6fd9a03bc9e337ce867bd606dc94c2b4438480a\n"
    },
    {
      "commit": "f450fa5f991af3c0814f96265cb3b2aafdce2309",
      "tree": "1f0e549863606fb8e11215061ad5dde0f37b50cd",
      "parents": [
        "5ef5272be985dfdeafa86077c306f6b64d334240",
        "0be7eda75a14815aaa3e5cd5d5d4e5d25dc35d1c"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon May 03 15:33:05 2010 -0700"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Mon May 03 15:33:05 2010 -0700"
      },
      "message": "merge from open-source master\n\nChange-Id: If02d33af51017dbd85e91c79ac2e848eda6cf253\n"
    },
    {
      "commit": "c22da7ed32f8b537b8e4653fd777056e8315ebdf",
      "tree": "9505f7cf6c5329d3f6c80f928b7b84dd5e3c2db2",
      "parents": [
        "95604529ec25fe7923ba88312c590f38aa5e3d9e"
      ],
      "author": {
        "name": "Alexey Tarasov",
        "email": "tarasov@dodologics.com",
        "time": "Thu Dec 03 11:26:22 2009 +1000"
      },
      "committer": {
        "name": "Alexey Tarasov",
        "email": "tarasov@dodologics.com",
        "time": "Thu Dec 03 11:37:22 2009 +1000"
      },
      "message": "Fix log channel initialization at bionic/logd_write.c.\n\nlog_channel_t contains fd member, which is file descriptor for\nexact logging channel. change cc05d1271680d6a7804bc89d3b1fe14c40b32396\nlacks initialization of this member in __write_to_log_init(), thus\nlogging code is not working, although not crashable.\n\nAdditional details may be found in comments here:\nhttp://review.source.android.com/5617\n"
    },
    {
      "commit": "5cdb2b73d269580b66297c84d9395f5f9b62d963",
      "tree": "9319975ceb566a944f32c4ca5e2daead8a19bfa5",
      "parents": [
        "3bbac05726e0d42db333d0578fc9de9f2c5e910d"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Nov 30 17:09:45 2009 -0800"
      },
      "committer": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Mon Nov 30 17:09:45 2009 -0800"
      },
      "message": "Fix libc logging implementation.\n\nThe file descriptor wasn\u0027t getting set, so the writev() call was\nsilently failing.\n\nThere\u0027s a parallel implementation over in system/core/liblog, but it\u0027s\nstill using the old approach and didn\u0027t have this problem.\n"
    },
    {
      "commit": "cc05d1271680d6a7804bc89d3b1fe14c40b32396",
      "tree": "9f243790eb257187c67d65b5dd025e75d2b8c81e",
      "parents": [
        "8f53951b054d5d8267f4550a4bc726e09e66fc2d"
      ],
      "author": {
        "name": "Alexey Tarasov",
        "email": "tarasov@dodologics.com",
        "time": "Sat Dec 13 08:24:44 2008 +1000"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Aug 25 10:27:26 2009 -0700"
      },
      "message": "Changed logging functions in bionic/logd_write.c.\n\nMain differences from original code:\n1. now log channel for LOG_ID_MAIN may exist even if LOG_ID_RADIO\n   facility failed.\n2. __write_to_log_null() now acts as always successful function.\n3. it\u0027s more simplier to add new logging channels now\n\nammended commit fixes my typo on line 130\n"
    },
    {
      "commit": "c4eee3765bf9dd81ff055e70ff7daa83a3926d2a",
      "tree": "fca5f9156dba6f7a3278699da9665c138c08f816",
      "parents": [
        "6ee8f1b0444c0db94931d2cd64427ded8fba38b0"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 08 14:22:41 2009 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Fri Jul 10 00:32:08 2009 +0200"
      },
      "message": "Prevent a crash in the memory leak checker (which happened in chk_free())\n\nSimplify the code a little, removing un-necessary mutex locks/unlocks.\nProvide slightly better diagnostic message in case of corruption.\nUse snprintf/strlcat instead of sprintf/strcat\n"
    },
    {
      "commit": "1dc9e472e19acfe6dc7f41e429236e7eef7ceda1",
      "tree": "3be0c520fae17689bbf5584e1136fb820caef26f",
      "parents": [
        "1767f908af327fa388b1c66883760ad851267013"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 19:28:35 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "1767f908af327fa388b1c66883760ad851267013",
      "tree": "4b825dc642cb6eb9a060e54bf8d69288fbee4904",
      "parents": [
        "a799b53f10e5a6fd51fef4436cfb7ec99836a516"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Tue Mar 03 18:28:13 2009 -0800"
      },
      "message": "auto import from //depot/cupcake/@135843\n"
    },
    {
      "commit": "2489551343aa89fc539f369f7689c941b78c08d1",
      "tree": "877da859f88254d7f2ba709801bd57fd00f77dc5",
      "parents": [
        "9f65adf2ba3bb15feb8b7a7b3eef788df3fd270e"
      ],
      "author": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:48 2009 -0800"
      },
      "committer": {
        "name": "The Android Open Source Project",
        "email": "initial-contribution@android.com",
        "time": "Fri Feb 13 12:57:48 2009 -0800"
      },
      "message": "auto import from //branches/cupcake/...@131421\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"
    }
  ]
}
