)]}'
{
  "log": [
    {
      "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": "e4ddb3c587d07a8b8459d8202b31c0d9340ce8a1",
      "tree": "b80253d8ccc73221b0976fb9db2f752789da0e52",
      "parents": [
        "e4e69a174a0b4980eaff49c55c39b476cbe9b73e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 17 14:12:25 2017 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Apr 17 14:12:25 2017 -0700"
      },
      "message": "Move bionic_systrace.cpp over to CachedProperty.\n\nThis is the last bionic caller that was manually trying to cache\nproperty values.\n\nBug: N/A\nTest: builds and boots\nChange-Id: Id66c0a05d8448f08c39dbf7189241e75615d44b4\n"
    },
    {
      "commit": "2a4a5e72f161699be75b247e6fcb3a9ac6d8a852",
      "tree": "5fb0cd3bd574d8243a42ad6ba92bcf4a3cbf002b",
      "parents": [
        "e0561cb0c9612b844dbca2eee4032ec162ed246c"
      ],
      "author": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 20 10:54:52 2017 -0700"
      },
      "committer": {
        "name": "Dimitry Ivanov",
        "email": "dimitry@google.com",
        "time": "Mon Mar 20 12:45:55 2017 -0700"
      },
      "message": "Add end() method to bionic\u0027s ScopedTrace class\n\nBug: http://b/27195126\nTest: make\nChange-Id: I8243629200606ca87b11cbd479ca093add42eb56\n"
    },
    {
      "commit": "46e2eadad24b9d11f5319efd393066ae8c35cd54",
      "tree": "6684ad778a4bdca5644d819b26f23b731ef4aeed",
      "parents": [
        "e371ae68ac0d6d39cacf5edc893bda2f4a61e883"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Dec 10 13:21:46 2015 -0800"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Dec 10 13:33:37 2015 -0800"
      },
      "message": "Do not set properties in bionic_systrace\n\nCurrently, if the debug.atrace.tags.enableflags property is not found,\nit is set to a safe value such that a pointer to this property can be\nstored for later access.  This may result in selinux denials because not\nall processes write permissions for this property or permission to\nconnect to the property write socket at all.\n\nChange I6d953c0c281fd72ad3eba8a479fd258023579b5b writes this property to\na safe value upon boot, which greatly decreases the cases in which this\nproperty will not be accessible and removes the need to write it here.\nThis commit removes this write.\n\nBug 26115803\n\nChange-Id: Ief72c5f731d3a1231b5080eb531fa0a491a8b1d1\n"
    },
    {
      "commit": "166112531558a1d4ea179c29147f27db7045db22",
      "tree": "c4b83a4e4e3e69da497381d73b94b9d6b7d361b0",
      "parents": [
        "2565492db0d67b95348cd1c3026ed338ca59aa37"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Tue Jul 21 17:27:54 2015 -0700"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Wed Jul 22 18:24:53 2015 -0700"
      },
      "message": "Don\u0027t abort when failed to write tracing message.\n\nAlso make the code thread-safe with lock.\n\nBug: 20666100\nChange-Id: I0f331a617b75280f36179c187418450230d713ef\n"
    },
    {
      "commit": "05fc1d7050d5451aea08dc5f504d2670287b2d43",
      "tree": "fa1d81b61b303ee8ed94c511cc08b8f40ed6624b",
      "parents": [
        "43606bc1ce974e4ba42d7d2c3682ad5182e6fc96"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 28 18:02:33 2015 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jan 28 19:23:11 2015 -0800"
      },
      "message": "Add missing includes.\n\nChange-Id: Ibf549266a19a67eb9158d341a69dddfb654be669\n"
    },
    {
      "commit": "40360b379cee07574493f5a450cf1c6e531bdde0",
      "tree": "2b16a06dc25f1c3f51e94dc099513464f615e622",
      "parents": [
        "0a552407ada6fc718be016df0902f6c23aa88eea"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 29 13:29:50 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Dec 29 13:29:50 2014 -0800"
      },
      "message": "Remove bogus transitive includes.\n\n\u003csignal.h\u003e shouldn\u0027t get you the contents of \u003cerrno.h\u003e, and \u003cfcntl.h\u003e\nshouldn\u0027t get you the contents of \u003cunistd.h\u003e.\n\nChange-Id: I347499cd8671bfee98e6b8e875a97cab3a3655d3\n"
    },
    {
      "commit": "f73183f1a34df22b62a3d0bbf82e18d5797c9cde",
      "tree": "1bc3c9a47180aaeb2f734e835034a3f6b9ac9d00",
      "parents": [
        "7b87d441b0f2aa3ad5021ab6bd879a995a1bc2ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 16:20:59 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 16:20:59 2014 -0700"
      },
      "message": "More cases where libc should use O_CLOEXEC.\n\nChange-Id: Idfa111aeebc5deca2399dae919e8b72eb54c23c0\n"
    },
    {
      "commit": "a406ee6d5f616192e9a13afad6ac6a9969814fc1",
      "tree": "bc9d1575ddacb246d49109367b6151732fbfe19e",
      "parents": [
        "337c0cefdc4667143a1f4f2c30113b452c5d188f"
      ],
      "author": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Mon Jul 21 15:38:06 2014 -0700"
      },
      "committer": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Mon Jul 28 19:38:08 2014 -0700"
      },
      "message": "Added a bionic systrace class and tracing to pthread_mutex.cpp.\n\nbionic_systrace.h contains an implementation of tracing that\ncan be used with systrace.py and its associated viewer.  pthread_mutex\nnow uses this tracing to track pthread_mutex contention, which can be\nenabled by using the \"bionic\" command line option to systrace.\n\nBug: 15116468\nChange-Id: I30ed5b377c91ca4c36568a0e647ddf95d4e4a61a\n"
    }
  ]
}
