)]}'
{
  "log": [
    {
      "commit": "12bf3bcdeeaa0dcdc7a4f4e4d11bc2fc3bf6bd7a",
      "tree": "b43eb9e1c4715173e270dab940c91c48557555fe",
      "parents": [
        "176ccd4925c682f036141c8618650b16912b9bd4"
      ],
      "author": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 01 14:24:45 2014 -0700"
      },
      "committer": {
        "name": "Dmitriy Ivanov",
        "email": "dimitry@google.com",
        "time": "Tue Jul 01 14:46:03 2014 -0700"
      },
      "message": "Write message to stderr on __libc_fatal()\n\nChange-Id: Ia8d6e256768fa51786d0139d3f3b6e9e4bebe027\n"
    },
    {
      "commit": "1728b2396591853345507a063ed6075dfd251706",
      "tree": "7083cd234073afa5179b94b3d978550c890af90c",
      "parents": [
        "bac795586bbc5dcbe886d8d781710f60c4c19d9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 14 10:02:03 2014 -0700"
      },
      "message": "Switch to g_ for globals.\n\nThat\u0027s what the Google style guide recommends, and we\u0027re starting\nto get a mix.\n\nChange-Id: Ib0c53a890bb5deed5c679e887541a715faea91fc\n"
    },
    {
      "commit": "011101905d91b770893e8a2fb6c09552d1c63652",
      "tree": "33ccd1144ca98181b920ccb918982af14ab3423e",
      "parents": [
        "f837cbdc27a0f024bdc9898177a8ac05817441a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 07 16:35:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 07 16:35:59 2014 -0700"
      },
      "message": "Send bionic\u0027s fatal logging to the crash log.\n\nBug: 14159417\nChange-Id: I7aa986fb8e11660035221f9bb4fe0bc40ac36c58\n"
    },
    {
      "commit": "c78368f04faa4ee17f546985809e7550f3f88636",
      "tree": "837ebe14bbb4a6f54e192a0b941d17e3cdc94b5c",
      "parents": [
        "e05df25145eda8ca59db5eb03cf5dbf8c7714870"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 06 20:37:22 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 06 20:37:22 2014 -0700"
      },
      "message": "Change the interface for fatal logging.\n\nThis more general interface lets liblog give us any fatal log message,\nregardless of source. This means we can remove the special case for\nLOG_ALWAYS_FATAL with a simpler scheme that automatically works for\nthe VM too.\n\nChange-Id: Ia6dbf7c3dbabf223081bd5159294835d954bb067\n"
    },
    {
      "commit": "2e3b7108b5b3d3f3a4a0fb369016e854bcf92212",
      "tree": "9c44095aed267fa12c51c2e8189e8cfc2a7ea542",
      "parents": [
        "3b0433f34fed755c28a92d46eab88729694b8055"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 23 14:52:49 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Apr 23 14:52:49 2014 -0700"
      },
      "message": "Allow liblog to pass failure reasons to debuggerd.\n\nassert(3) already does this, but LOG_ALWAYS_FATAL and LOG_ALWAYS_FATAL_IF\nhave been missing out.\n\nChange-Id: I1d6214c4f792fa0d4ba3c14eded3fc9c332bd3c5\n"
    },
    {
      "commit": "8664be583a4556e5ca132288e989d307d2df92ce",
      "tree": "b60fb319aec98cff9f636db29f1432a2ba1096c3",
      "parents": [
        "2cc58603d5fd68ec582984318fb3c5f8865a186f"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Mar 20 16:07:55 2014 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Mar 20 16:35:18 2014 -0700"
      },
      "message": "libc: Thread IDs missing from logcat -v thread\n\n- stuff caller\u0027s thread id into the packet.\n\nBug: 13568206\nChange-Id: If8b318ef75c7dcdddb05da8ac3038860f0fda5ec\n"
    },
    {
      "commit": "9fc76027f3e1e02193f3dd98063c55918e1b4066",
      "tree": "9b07b62b5c0b809a0534c019ae18ee05ec478304",
      "parents": [
        "48d145c1ced299525ca766afd2aa34725bef5301"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Mar 05 13:44:00 2014 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Mar 05 16:59:39 2014 -0800"
      },
      "message": "libc: libc_logging 64bit compile issue\n\n- user space logger wire format for time\n\nChange-Id: I4840653e3a6ae151a02584311d1227d2fe536d0f\n"
    },
    {
      "commit": "0336e35368aa161f1fed04ccde39553db4740b97",
      "tree": "695110f21adb248648f6c2d850c8abb2d6800564",
      "parents": [
        "27c7dbeee6c5e0cee488ce5085cc0b8c5e0301bd"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Nov 08 06:58:01 2013 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Feb 26 15:33:13 2014 -0800"
      },
      "message": "libc: Make calls to new user-space logger\n\n* libc (fatal) logging now makes socket connection to the\n  user-space logging service.\n* Add a TARGET_USES_LOGD make flag for BoardConfig.mk to manage\n  whether logd is enabled for use or not.\n\nChange-Id: I96ab598c76d6eec86f9d0bc81094c1fb3fb0d9b4\n"
    },
    {
      "commit": "d1eda33f012e46083b91e087fb79d14a5ce70f0e",
      "tree": "2d075e9d43c3a300327e79ee27c5b8330d8dce4c",
      "parents": [
        "dc9d8d050a43e1cd32f1337e79187124bb15d938"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 15 16:43:38 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 15 16:49:28 2013 -0700"
      },
      "message": "Avoid confusing \"read prevented write\" log messages.\n\nMoving to a \"function: message\" style avoids ambiguity.\n\nChange-Id: If9d590e50265c61725d3673bd03796e65edd2d5e\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "0f395b7ba056ccec3915737cfece81ca2161e980",
      "tree": "bfa09bf67d1ffd7eb782543699ba8810aeb6b6cf",
      "parents": [
        "9c710927ab33a663a5ba34b15902e7062523f8e3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 13:19:00 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 08 13:19:00 2013 -0700"
      },
      "message": "Make logging fall back to /dev/stderr if we\u0027re on the host.\n\nOtherwise you get no logging, which sucks.\n\nChange-Id: Iea1e8f996461afbb217a55711b7967005c39cfcb\n"
    },
    {
      "commit": "17fc25d20f4d61f7fc3dfb3de095719ada89e38b",
      "tree": "f9eba3a4f92a65ce47a8c67546f78378d045412d",
      "parents": [
        "0ce28d20ea5fde250576f355004dbcd741b0b884"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 21 13:28:42 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 21 13:28:42 2013 -0700"
      },
      "message": "libc_logging: don\u0027t keep file descriptors open forever\n\nAvoid keeping unnecessary file descriptors around when they\u0027re not\nneeded. Libc doesn\u0027t log so much that opening / closing overhead\nmatters.\n\nChange-Id: I590ec5c27562db9bac025f781c48ec9a7724ce77\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": "885f3b9cad01b8158aadc55c159c17dbf34f622c",
      "tree": "55991f909d2a12f185c0773de57cdf01b7074ecd",
      "parents": [
        "b7b4f5b838cd41407c734af74e8211f5c7da0036"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 21 17:48:01 2013 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jun 07 14:55:32 2013 -0700"
      },
      "message": "Implement malloc_usable_size for debug impls.\n\n- Implemented chk_memalign.\n- Fixed a few bugs in leak_memalign.\n- Implemented {leak,fill,check,qemu}_malloc_usable_size.\n- Make malloc_usable_size update at run time.\n- Add malloc_test.cpp as a small set of tests for the\n  malloc debug routines.\n- Fix the qemu routines since it\u0027s been broken since it moved to C++.\n- Add support for the %u format to the out_vformat in libc_logging.cpp.\n  This is used by the emulator code.\n\nTested using the bionic-unit-tests with setprop libc.debug.malloc\nset to 1, 5, and 10.\n\nI tested as much as possible on the emulator, but tracing doesn\u0027t appear\nto be working properly.\n\nBug: 6143477\n\nMerge change from internal master.\n\n(cherry-picked from commit 3d594c258045783fc9e1956ce7a4d91e302f011e)\n\nChange-Id: I4ae00fffba82315a8c283f35893fd554460722fb\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": "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": "e23ed8c6441389a79c6504295184f7249e01a197",
      "tree": "8d10d7ccfc20e0a212c60b7628bb4ae709447d37",
      "parents": [],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 18:26:49 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Mar 15 18:26:49 2013 +0000"
      },
      "message": "Merge \"Remove useless workaround for HTC RIL bugs.\""
    }
  ]
}
