)]}'
{
  "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": "569333293aeefbe792826cd59140dc23704018c4",
      "tree": "9174c0192992720b8f13db88618f6ec3e491b53e",
      "parents": [
        "14545d4ce3dd446f20a14dcff37d60ff8d756f7a"
      ],
      "author": {
        "name": "Mor-sarid, Nitzan",
        "email": "nitzan.mor-sarid@intel.com",
        "time": "Fri Sep 11 05:31:36 2015 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 16 11:45:13 2015 -0700"
      },
      "message": "Fix the way to get main thread stack start address.\n\nFor previous way to get the stack using the [stack] string from\n/proc/self/task/\u003cpid\u003e/maps is not enough. On x86/x86_64, if an\nalternative signal stack is used while a task switch happens,\nthe [stack] indicator may no longer be correct.\n\nInstead, stack_start from /proc/self/stat which is always inside\nthe main stack, is used to find the main stack in /proc/self/maps.\n\nChange-Id: Ieb010e71518b57560d541cd3b3563e5aa9660750\nSigned-off-by: Nitzan Mor-sarid \u003cnitzan.mor-sarid@intel.com\u003e\nSigned-off-by: Mingwei Shi \u003cmingwei.shi@intel.com\u003e\n"
    },
    {
      "commit": "58cf31b50699ed9f523de38c8e943f3bbd1ced9e",
      "tree": "258ba808074bd047a94df452a4e465db66136797",
      "parents": [
        "e86a86f9f24df7028d2596c69ff008cf88e039e4"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 06 17:23:53 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Thu Mar 12 21:39:49 2015 -0700"
      },
      "message": "Make pthread join_state not protected by g_thread_list_lock.\n\n1. Move the representation of thread join_state from pthread.attr.flag\n   to pthread.join_state. This clarifies thread state change.\n2. Use atomic operations for pthread.join_state. So we don\u0027t need to\n   protect it by g_thread_list_lock. g_thread_list_lock will be reduced\n   to only protect g_thread_list or even removed in further changes.\n\nBug: 19636317\nChange-Id: I31fb143a7c69508c7287307dd3b0776993ec0f43\n"
    },
    {
      "commit": "9d0c79304d2413028aa5c213f7a567f00feccde5",
      "tree": "b9c119c7f8e935abb9466e9253b905a7f485d968",
      "parents": [
        "45ee73a7fbe98cba2ccb007b60c027d27dfca1cb"
      ],
      "author": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 06 13:48:58 2015 -0800"
      },
      "committer": {
        "name": "Yabin Cui",
        "email": "yabinc@google.com",
        "time": "Fri Mar 06 15:16:44 2015 -0800"
      },
      "message": "Remove PTHREAD_ATTR_FLAG_MAIN_THREAD.\n\nMake this change because I think it is more reasonable to check stack info\nin pthread_getattr_np. I believe pthread_attr_t is not tied with any thread,\nand can\u0027t have a flag saying who using it is the main thread.\nThis change also helps refactor of g_thread_list_lock.\n\nBug: 19636317\nChange-Id: Iedbb85a391ac3e1849dd036d01445dac4bc63db9\n"
    },
    {
      "commit": "9afb2f2106a5d659854c175c574c1c31e0e205a2",
      "tree": "cbcc21f633b85ff022827d5e2c3ac87db3a5e2c4",
      "parents": [
        "d0944d9ed38be0d74c3d8876f0f36b9ddc0ce38c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 09 14:01:47 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 09 14:01:47 2014 -0700"
      },
      "message": "Fix pthread_attr_getstack under valgrind.\n\nvalgrind seems to mess with the stack enough that the kernel will\nreport \"[stack:pid]\" rather than \"[stack]\" in /proc/self/maps, so\nswitch to the task-specific file instead to force \"[stack]\". (There\nare two conditions in the kernel code that decides which form to\noutput.)\n\nBug: 17897476\nChange-Id: Iff85ceb6d52e8716251fab4e45d95a27184c5529\n"
    },
    {
      "commit": "9e4ffa7032eaab308876b8e3da86b05c3c613878",
      "tree": "83e23ad0b0ba82c017cbf292abd7594d2148f316",
      "parents": [
        "34da32e7dd00270e98b845f8a810a6f12ffffb9b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 27 15:32:01 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 27 15:32:01 2014 -0700"
      },
      "message": "Have pthread_attr_getstack for the main thread report RLIMIT_STACK...\n\n...rather than just what\u0027s already mapped in. This seems somewhat\ncontrary to POSIX\u0027s \"All pages within the stack described by stackaddr\nand stacksize shall be both readable and writable by the thread\", but\nit\u0027s what glibc does.\n\nBug: 17111575\nChange-Id: If9e2dfad9a603c0d0615a8123aacda4946e95b2c\n"
    },
    {
      "commit": "57b7a6110e7e8b446fc23cce4765ff625ee0a105",
      "tree": "e2578675ae1435988a645a32182ced476f802ec5",
      "parents": [
        "a4a8c4feb8cf3cebf8aceace70e699e128095b5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 25 17:26:50 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 26 10:36:38 2014 -0700"
      },
      "message": "Fix pthread_getattr_np for the main thread.\n\nOn most architectures the kernel subtracts a random offset to the stack\npointer in create_elf_tables by calling arch_align_stack before writing\nthe auxval table and so on. On all but x86 this doesn\u0027t cause a problem\nbecause the random offset is less than a page, but on x86 it\u0027s up to two\npages. This means that our old technique of rounding the stack pointer\ndoesn\u0027t work. (Our old implementation of that technique was wrong too.)\n\nIt\u0027s also incorrect to assume that the main thread\u0027s stack base and size\nare constant. Likewise to assume that the main thread has a guard page.\nThe main thread is not like other threads.\n\nThis patch switches to reading /proc/self/maps (and checking RLIMIT_STACK)\nwhenever we\u0027re asked.\n\nBug: 17111575\nSigned-off-by: Fengwei Yin \u003cfengwei.yin@intel.com\u003e\nChange-Id: I1d4dbffe7bc7bda1d353c3a295dbf68d29f63158\n"
    },
    {
      "commit": "a4eafa6dbc98378f3fa759fec8590871e2b5ae29",
      "tree": "4b8a1a0a8c8070ae4845d9dfcaa88daab380ae68",
      "parents": [
        "10f6beb3eb46cb2488427f58dccdd7bbfab5a250"
      ],
      "author": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Mon Mar 10 18:10:04 2014 +0000"
      },
      "committer": {
        "name": "Calin Juravle",
        "email": "calin@google.com",
        "time": "Tue Mar 11 10:44:36 2014 +0000"
      },
      "message": "Removed pthread_attr_getstackaddr/pthread_attr_setstackaddr\n\nMoved existing definitions to ndk_cruft to preserve NDK compatibility.\n\nBug: 13281069\nChange-Id: I6f260de69afa55a6274f0d13145c19ac6517b9d5\n"
    },
    {
      "commit": "f0870c3bfeba99482392fafe6d5f49615393c2b1",
      "tree": "1890250f9c08baa19ddd7b0a6fccaab1f95dc3d4",
      "parents": [
        "bef5016491eed41521f514d5c5528e2274689948"
      ],
      "author": {
        "name": "Halton Huo",
        "email": "halton.huo@intel.com",
        "time": "Fri Feb 21 18:05:29 2014 +0800"
      },
      "committer": {
        "name": "Halton Huo",
        "email": "halton.huo@intel.com",
        "time": "Wed Mar 05 16:34:20 2014 +0800"
      },
      "message": "Fix some pthread symbols build as C++ symbol under x64 lunch.\n\nFunctions protected with !defined(__LP64__) will be get build as C++\nsymbols for X64 build. This is not the desired work. So protect the\nimplementation with !defined(__LP64__) as well.\n\nChange-Id: I4ef50ec36e46289ab308063e24f6c5ac61a6ca8d\n"
    },
    {
      "commit": "c3f114037dbf028896310609fd28cf2b3da99c4d",
      "tree": "e463aeb3604177cd93cea8a58936a8dce4b34ee5",
      "parents": [
        "d0d0b52da375bfa85947a4257198791f615f18a8"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 30 14:40:09 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 31 12:31:16 2013 -0700"
      },
      "message": "\u003cpthread.h\u003e fixes and pthread cleanup.\n\n\u003cpthread.h\u003e was missing nonnull attributes, noreturn on pthread_exit,\nand had incorrect cv qualifiers for several standard functions.\n\nI\u0027ve also marked the non-standard stuff (where I count glibc rather\nthan POSIX as \"standard\") so we can revisit this cruft for LP64 and\ntry to ensure we\u0027re compatible with glibc.\n\nI\u0027ve also broken out the pthread_cond* functions into a new file.\n\nI\u0027ve made the remaining pthread files (plus ptrace) part of the bionic code\nand fixed all the warnings.\n\nI\u0027ve added a few more smoke tests for chunks of untested pthread functionality.\n\nWe no longer need the libc_static_common_src_files hack for any of the\npthread implementation because we long since stripped out the rest of\nthe armv5 support, and this hack was just to ensure that __get_tls in libc.a\nwent via the kernel if necessary.\n\nThis patch also finishes the job of breaking up the pthread.c monolith, and\nadds a handful of new tests.\n\nChange-Id: Idc0ae7f5d8aa65989598acd4c01a874fe21582c7\n"
    },
    {
      "commit": "405f8553cf19c583158d59ab44a5d668eade360d",
      "tree": "971ae2a0ed75041cfdd41a8a61352da7644820c2",
      "parents": [
        "b2acd5ded1e801fb1379ec51c6f43eab63af50f5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 01 17:25:28 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 01 17:25:28 2013 -0700"
      },
      "message": "Remove more assumptions that pointers are 32-bit.\n\nChange-Id: I2157e2fc4db7692b746c697982c3d028a056462a\n"
    },
    {
      "commit": "50af69e8f326b2762a44d5fea2b118e7616e5d20",
      "tree": "46a173af8b370ce18d029c05c636bdc6fcc557ed",
      "parents": [
        "322e7bce235ec6e3f82f65669423a1d9e997b51e"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 13 16:34:43 2013 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri Sep 13 16:44:47 2013 -0700"
      },
      "message": "Simplify main thread stack size initialization\n\nChange-Id: Iec09433d9de501031cce09dc75848a5e8f3d96bf\n"
    },
    {
      "commit": "84114c8dd5b17efecf7988f263ce431208d7be5a",
      "tree": "81d4ae4e6a40c4255b2e76adeb2b68dab5932058",
      "parents": [
        "40e7a87864fee75f7af2caf8e1972d0d764135cd"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 17 13:33:19 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jul 17 13:33:19 2013 -0700"
      },
      "message": "Improve stack overflow diagnostics (take 2).\n\nThis reverts commits eb1b07469f2b5a392dc1bfd8adc211aea8c72bc5 and\nd14dc3b87fbf80553f1cafa453816b7f11366627, and fixes the bug where\nwe were calling mmap (which might cause errno to be set) before\n__set_tls (which is required to implement errno).\n\nBug: 8557703\nChange-Id: I2c36d00240c56e156e1bb430d8c22a73a068b70c\n"
    },
    {
      "commit": "d14dc3b87fbf80553f1cafa453816b7f11366627",
      "tree": "b1a26c875f451b79888f60cf73504aab799874e1",
      "parents": [
        "aa754dca90487356cabf07ade0e8d88c2630b784"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Wed Jul 17 03:17:05 2013 +0000"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Wed Jul 17 03:17:05 2013 +0000"
      },
      "message": "Revert \"Improve stack overflow diagnostics.\"\n\nThis reverts commit aa754dca90487356cabf07ade0e8d88c2630b784.\n\nChange-Id: Ifa76eee31f7f44075eb3a48554315b2693062f44\n"
    },
    {
      "commit": "aa754dca90487356cabf07ade0e8d88c2630b784",
      "tree": "b4cda0d4fa3935abd85b3ee178d35d0738e8a744",
      "parents": [
        "9562d38df1e4aba941b3433cfd0922fee5ea258b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 13:14:24 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 16 13:14:24 2013 -0700"
      },
      "message": "Improve stack overflow diagnostics.\n\nWe notify debuggerd of problems by installing signal handlers. That\u0027s\nfine except for when the signal is caused by us running off the end of\na thread\u0027s stack and into the guard page.\n\nBug: 8557703\nChange-Id: I1ef65b4bb3bbca7e9a9743056177094921e60ed3\n"
    },
    {
      "commit": "b95cf0d23a1db3b7c37bd98b0c86196796c9b029",
      "tree": "f9e43cf229b0bfe58029dd5adbac739d18df6742",
      "parents": [
        "59ed029b286a1564f635377296e4f088e0fd2afa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 15 14:51:07 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jul 15 14:51:07 2013 -0700"
      },
      "message": "Fix pthread_getattr_np, pthread_attr_setguardsize, and pthread_attr_setstacksize.\n\npthread_getattr_np was reporting the values supplied to us, not the values we\nactually used, which is kinda the whole point of pthread_getattr_np.\n\npthread_attr_setguardsize and pthread_attr_setstacksize were reporting EINVAL\nfor any size that wasn\u0027t a multiple of the system page size. This is\nunnecessary. We can just round like POSIX suggests and glibc already does.\n\nAlso improve the error reporting for pthread_create failures.\n\nChange-Id: I7ebc518628a8a1161ec72e111def911d500bba71\n"
    },
    {
      "commit": "6d339182070b035ca94f19bc37c94f4d9813c374",
      "tree": "3745d21667b8c856276c85cf0864d6ab483f83cf",
      "parents": [
        "4912782c6af7169686acc9553fb0bb33251b0d0d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 16:36:04 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 16:36:04 2013 -0800"
      },
      "message": "Simplify pthread_create, using more public API.\n\nChange-Id: I08e65ba88ed01436223e4e528631c9e41ec0e7f4\n"
    },
    {
      "commit": "3e898476c7230b60a0f76968e64ff25f475b48c0",
      "tree": "0f876aeb565b7e7ac627a6305a355c40173912f2",
      "parents": [
        "fcaf4e9f9b735e053469c7ecbf63584e10fd67a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 16:40:24 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 15:27:18 2013 -0800"
      },
      "message": "Revert \"Revert \"More pthreads cleanup.\"\"\n\nThis reverts commit 6f94de3ca49e4ea147b1c59e5818fa175846518f\n\n(Doesn\u0027t try to increase the number of TLS slots; that leads to\nan inability to boot. Adds more tests.)\n\nChange-Id: Ia7d25ba3995219ed6e686463dbba80c95cc831ca\n"
    },
    {
      "commit": "6f94de3ca49e4ea147b1c59e5818fa175846518f",
      "tree": "9a2c45004114f53c4cf1f9468a58fe54c58320fa",
      "parents": [
        "2a1bb4e64677b9abbc17173c79768ed494565047"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Feb 12 06:06:22 2013 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Tue Feb 12 06:06:22 2013 +0000"
      },
      "message": "Revert \"More pthreads cleanup.\"\n\nThis reverts commit 2a1bb4e64677b9abbc17173c79768ed494565047\n\nChange-Id: Ia443d0748015c8e9fc3121e40e68258616767b51\n"
    },
    {
      "commit": "2a1bb4e64677b9abbc17173c79768ed494565047",
      "tree": "3e843fd4277f2bdc502511bd5e4ee539887c14f1",
      "parents": [
        "2d3e72336e76180fb00822386da4f14203d117ce"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 12:34:03 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Feb 11 14:56:39 2013 -0800"
      },
      "message": "More pthreads cleanup.\n\nPOSIX says pthread_create returns EAGAIN, not ENOMEM.\n\nAlso pull pthread_attr_t functions into their own file.\n\nAlso pull pthread_setname_np into its own file.\n\nAlso remove unnecessary #includes from pthread_key.cpp.\n\nAlso account for those pthread keys used internally by bionic,\nso they don\u0027t count against the number of keys available to user\ncode. (They do with glibc, but glibc\u0027s limit is the much more\ngenerous 1024.)\n\nAlso factor out the common errno-restoring idiom to reduce gotos.\n\nBug: 6702535\nChange-Id: I555e66efffcf2c1b5a2873569e91489156efca42\n"
    }
  ]
}
