)]}'
{
  "log": [
    {
      "commit": "b5f053b5a7deb084e7a052d527e0aa41339ae05c",
      "tree": "a75d6715f7c7c954d22440b8c21c59b01d87e83d",
      "parents": [
        "4a9b7c694a8312160d3cd953a8227c23a1624868"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:17:54 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 15:18:21 2012 -0700"
      },
      "message": "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).\n\nChange-Id: I426109db25e907980d6cb3a7a695796e45783b78\n"
    },
    {
      "commit": "bfeab1bbe7e8d0c08b7e3f46aedab64e3b2bf706",
      "tree": "d7ee2fec0079394cfacebdc632036a53f079c011",
      "parents": [
        "ff4608ae0cb78caa05b83e109fc2633682958089"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 17:47:37 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Sep 05 17:47:37 2012 -0700"
      },
      "message": "Don\u0027t corrupt the thread list in static executables.\n\nSeveral previous changes conspired to make a mess of the thread list\nin static binaries. This was most obvious when trying to call\npthread_key_delete(3) on the main thread.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d36893\nChange-Id: I2a2f553114d8fb40533c481252b410c10656da2e\n"
    },
    {
      "commit": "3e2d2936b0447ed2f0b0aab3625494b2533cd422",
      "tree": "4c2fb816f869b4fad805a02bfc701d20abc20e1e",
      "parents": [
        "6fe901ef38898d9cb6007720940e915f7180fc11"
      ],
      "author": {
        "name": "Kirill Artamonov",
        "email": "kartamonov@nvidia.com",
        "time": "Fri Aug 31 09:19:16 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 31 11:11:40 2012 -0700"
      },
      "message": "Avoid malloc lock while calling pthread_atfork.\n\nExpecting the memory in a forked child process to be sane wrt threading\nis a bad idea. An example of a problem is when the parent process has\nthe malloc lock and a child process is forked. The malloc lock in the\nchild will appear locked by a thread that doesn\u0027t exist.\n\nThis change aims to make bionic more compatible with glibc by reseting\nthe malloc lock in the child forked process, as well as holding it\nduring the fork. This is a feature in dlmalloc 2.8.6 called\nLOCK_AT_FORK. In general this feature isn\u0027t necessary as a forked\nprocess will then exec. Some bad applications rely on being able to use\nfeatures like malloc before the exec and having multiple threads running\nin the parent program. This isn\u0027t a problem with glibc and this patch\nmakes it not a problem for bionic.\n\nUnfortunately for use in bionic, LOCK_AT_FORK has an issue as internally\nit uses pthread_atfork that in bionic uses malloc. This leads to the\nLOCK_AT_FORK initialization deadlocking with pthread_atfork\u0027s call to\nmalloc due to the malloc lock. This change moves the pthread_atfork logic\nin LOCK_AT_FORK to be called without the malloc lock held.\n\nChange-Id: Id68175a564a6abb936ee4488b44d9479f7311f69\n"
    },
    {
      "commit": "6fe901ef38898d9cb6007720940e915f7180fc11",
      "tree": "4c177741d29711f51230bf42e392e36f3f68fcb9",
      "parents": [
        "8b4e8a937be2e7ac94e52d596813095ef16c9ec8",
        "c6d95add30dc24674bdcb39f69812c115e4205fd"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Fri Aug 31 08:42:40 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Aug 31 08:42:41 2012 -0700"
      },
      "message": "Merge \"Upgrade to dlmalloc 2.8.6.\""
    },
    {
      "commit": "c6d95add30dc24674bdcb39f69812c115e4205fd",
      "tree": "4e6776adfb8fed41d3b5075d15916ffc11197134",
      "parents": [
        "069c64cdf2d3da7b7ff6ea5d1041f982fb10ab22"
      ],
      "author": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 29 14:04:53 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Wed Aug 29 18:18:29 2012 -0700"
      },
      "message": "Upgrade to dlmalloc 2.8.6.\n\nThis fixes a bug and enables the use of MORECORE_CONTIGUOUS.\n\nChange-Id: Ia7c5d32bdc46e99b3ecb92ee94d1f702c4385d5d\n"
    },
    {
      "commit": "0d7177c0d47517514c81713427fc28e04dc3cd37",
      "tree": "b97bd449eb72ef2e6e7122db332e1801222bfb7d",
      "parents": [
        "069c64cdf2d3da7b7ff6ea5d1041f982fb10ab22",
        "c4d1fecc105063e68a5090a6900b63d1b9a24287"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 29 13:08:50 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 29 13:08:50 2012 -0700"
      },
      "message": "Merge \"Clean up warnings in the malloc_debug_* files.\""
    },
    {
      "commit": "c4d1fecc105063e68a5090a6900b63d1b9a24287",
      "tree": "93dad687b245a981d3c47ede05b43345b86202fe",
      "parents": [
        "9dfaa63a1c0d1b8e75dd9d7077a8103a19821fa9"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 28 14:15:04 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 29 12:08:13 2012 -0700"
      },
      "message": "Clean up warnings in the malloc_debug_* files.\n\nAlso clean up cpplint.py-detected lint.\n\nChange-Id: Ia18e89c4c6878764f8d7ed34b8247e7a8d8fe88b\n"
    },
    {
      "commit": "0a150ead18019c0e4e59417ae3c5e8e0d7d2e4f4",
      "tree": "0eb50d447d6cc6f5d8084e4f0dc452c8bc2d74d8",
      "parents": [
        "404e28ff8c3352a4fa290ae7769922db0172008e"
      ],
      "author": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Tue Aug 21 14:47:58 2012 +0200"
      },
      "committer": {
        "name": "Ard Biesheuvel",
        "email": "ard.biesheuvel@gmail.com",
        "time": "Wed Aug 22 20:45:26 2012 +0200"
      },
      "message": "libc: remove ctors/dtors sections\n\nNone of the supported ARCHs actually populate these sections,\nso there is no point in keeping them in the binaries.\n\nChange-Id: I21a364f510118ac1114e1b49c53ec8c895c6bc6b\nSigned-off-by: Ard Biesheuvel \u003card.biesheuvel@gmail.com\u003e\n"
    },
    {
      "commit": "bfc1d97531fa611ad2705c7179134b60e652ead4",
      "tree": "f03805631b280765892519eea1093afc663f3fc9",
      "parents": [
        "999089181ef60bb67e1a49f2cf6f4ec608a7caf8"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Mon Aug 20 18:28:20 2012 -0700"
      },
      "committer": {
        "name": "Ian Rogers",
        "email": "irogers@google.com",
        "time": "Mon Aug 20 19:25:39 2012 -0700"
      },
      "message": "Restore posix_memalign\n\nChange-Id: I24e31bcb8b1d8be9375852e76964f09becd11938\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": "2932f048327965731c7e1ab9f2968a2ddb1854f5",
      "tree": "d8b4473e1e707d67c487f89e49667a65505bd245",
      "parents": [
        "1771a33d11a24f1c47b1ef75e3726c5d9e751f5b"
      ],
      "author": {
        "name": "Jurijs Oniscuks",
        "email": "jurijs.oniscuks@sonymobile.com",
        "time": "Thu Jul 05 14:57:38 2012 +0200"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 17 16:18:32 2012 -0700"
      },
      "message": "Fix race condition in pthread_create()\n\nSave thread id to *thread_out before new\nthread is allowed to run else there\u0027s a\nrisk that the thread has finished and\nbeen deleted when *thread_out is assigned.\n\nChange-Id: I6b84c61a8df06840877d4ab036f26feace3192d8\n"
    },
    {
      "commit": "b7beb6907599b36809effe1b4db76039ac649518",
      "tree": "6629ebe3ee4167d4383022edf4fa7882144a5445",
      "parents": [
        "6c98cdb1924afd3e71d39904557933fa10adaebf"
      ],
      "author": {
        "name": "Pavel Chupin",
        "email": "pavel.v.chupin@intel.com",
        "time": "Fri Aug 17 12:53:29 2012 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Aug 17 12:44:23 2012 -0700"
      },
      "message": "Add link.h for all platforms with dl_phdr_info\n\nThis header is used on bionic build and should be propagated into\nsysroot on toolchain rebuild. Discussion re. this header is here:\nhttp://gcc.gnu.org/ml/gcc-patches/2012-08/msg00936.html\n\nIt is available already in mips NDK platforms:\ndevelopment/ndk/platforms/android-9/arch-mips/include/link.h\n\nChange-Id: I39ff467cdac9f448e31c11ee3e14a6200e82ab57\nSigned-off-by: Pavel Chupin \u003cpavel.v.chupin@intel.com\u003e\n"
    },
    {
      "commit": "04a83a48ed89f433c78e31106ed50059764797a0",
      "tree": "6629275f2829d31262bc21cd2e2aea9fce4796ff",
      "parents": [
        "449d4634bea0ff8f6b29a2826871279dd654f941"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 16 15:59:12 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 16 15:59:12 2012 -0700"
      },
      "message": "Enhance getcwd(3) to handle NULL like glibc.\n\nBug: http://code.google.com/p/android/issues/detail?id\u003d36085\nChange-Id: I960a1b585887eb66176c61d29c5c61c239a4003f\n"
    },
    {
      "commit": "9862f5e08bcbf51c80542fb148fc505df140cb95",
      "tree": "ac36f32a3cd722650d5e27c88af32f7297e08b89",
      "parents": [
        "ae7280994e7845037b667fd6ebdcb6f299ba1aab"
      ],
      "author": {
        "name": "Jin Wei",
        "email": "wei.a.jin@intel.com",
        "time": "Wed Aug 01 14:48:57 2012 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 16 12:08:36 2012 -0700"
      },
      "message": "bionic: add macro protection for MALLOC_ALIGNMENT\n\nIn previous commit: 2fd81ef7, .mk file has been modified to\nconfigure MALLOC_ALIGNMENT dynamicly according to board config.\nAdd the missing macor protection here.\n\nChange-Id: I703cca2ce0504ab3e11aab226b2c61fcc0c6afa1\nAuthor: Jin Wei \u003cwei.a.jin@intel.com\u003e\nSigned-off-by: Xiaokang Qin \u003cxiaokang.qin@intel.com\u003e\nSigned-off-by: Beare, Bruce J \u003cbruce.j.beare@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\n"
    },
    {
      "commit": "22d366cc09383956dc264ed4641572e609392eee",
      "tree": "8364d1dc738a464cc40bf1ccdaa13ab885f71934",
      "parents": [
        "e1cd69a708d30fbc3b9e0e8d4db67f67fc123b65"
      ],
      "author": {
        "name": "Jin Wei",
        "email": "wei.a.jin@intel.com",
        "time": "Wed Aug 08 15:15:16 2012 +0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Aug 15 17:04:50 2012 -0700"
      },
      "message": "enable clone system call for x86\n\nAdd __bionic_clone function for x86, which will be\nused for clone system call.\n\nChange-Id: I889dc9bf4b7ebb4358476e17e6f3233e26491f4d\nSigned-off-by: Jin Wei \u003cwei.a.jin@intel.com\u003e\nSigned-off-by: Xiaokang Qin \u003cxiaokang.qin@intel.com\u003e\nSigned-off-by: Beare, Bruce J \u003cbruce.j.beare@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nAuthor-tracking-BZ: 51414\n"
    },
    {
      "commit": "409302f0f9fce73ea4c82bbfd439041cd7923d34",
      "tree": "bc23c82d6b9a68cfe2b114496399e1561d5db749",
      "parents": [
        "54655eaf92ca91bfe2fa293896059a181e27b6eb"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 17:02:11 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 17:41:49 2012 -0700"
      },
      "message": "Switch to upstream NetBSD tdelete/tfind/tsearch.\n\ntdestroy is a GNU extension, so that stays.\n\nChange-Id: Iedebaff25ea7e92b1ab1dd4440da12b67b99aa40\n"
    },
    {
      "commit": "de727caee24df86c3052508aa213f7165168913a",
      "tree": "1c8a574f381c460f2a3708d0a7aa281bba61a7f5",
      "parents": [
        "222eec2ecfc4afcbd5cf0f08e16f69f6c3c424fa"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 15:45:36 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 16:10:19 2012 -0700"
      },
      "message": "Clean up warnings in stubs.cpp.\n\nSwitch to C++ to get extra warnings, and format the code Google style.\n\nChange-Id: Ifc0131bf297a6ee8a8a6b8d049a02518b0b1a4b7\n"
    },
    {
      "commit": "bf9441efb8dae6c26ee649f70b8dbb6116932828",
      "tree": "b660b54bffbb891d9d1550d6ca7a71f9807b740f",
      "parents": [
        "440e417d5f8fb3ab3b5296eaea3720be52086730"
      ],
      "author": {
        "name": "Amith Yamasani",
        "email": "yamasani@google.com",
        "time": "Sun Aug 12 19:51:34 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 13 14:19:16 2012 -0700"
      },
      "message": "Handle naming for system uids running as secondary users\n\nAllow naming such as u1_system, u2_radio, u2_media.\nForward and reverse mapping for the above.\n\n(cherry-pick of c60a0027b1ef3bc4929d2023e7083fbce12fafe7.)\n\nChange-Id: I46eeb23fee4f57b2907640570504123d3ce99985\n"
    },
    {
      "commit": "a5542129923d9c313fe9c3b97ab9bc822ca5c5f6",
      "tree": "bb088bf9bcdb7ac85623bdea3dcc13fc283024a8",
      "parents": [
        "d504eee9fa7dda59a41eb3e12ef973f32ee1169f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 09 11:54:23 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 09 11:54:23 2012 -0700"
      },
      "message": "Remove the last .jam file.\n\nHow did I miss this before?\n\nChange-Id: I2e582133fc4800656fdd81104f8dfc7ee8f5b580\n"
    },
    {
      "commit": "7e248be76441daa0ee27cc461c806e6010405c25",
      "tree": "724c03904cd51262e85f9f0232061787f905d505",
      "parents": [
        "e2731d98c1f0cd32d94b34cc4ee77148d6d52647",
        "ea8fad11d980d55ebd2bcf2302f3f1f742b6351c"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Aug 08 13:44:26 2012 -0700"
      },
      "committer": {
        "name": "android code review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Aug 08 13:44:27 2012 -0700"
      },
      "message": "Merge \"Add a .note.android.ident section to Android ELF binaries.\""
    },
    {
      "commit": "405b8029a6888f386adf3512113a33546141d1c8",
      "tree": "1e8e2122e5a6c662235c6729fed6b3d32e4abbb4",
      "parents": [
        "a1c0f08d3ccbe5c40be53903615e59113ade4922"
      ],
      "author": {
        "name": "Raghu Gandham",
        "email": "raghu@mips.com",
        "time": "Wed Jul 25 18:16:42 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Aug 02 16:07:26 2012 -0700"
      },
      "message": "MIPS support for libc.\n\nChange-Id: I2864dea04b3faf2d919165dcaa600af5b16c41c8\nSigned-off-by: Chris Dearman \u003cchris@mips.com\u003e\nSigned-off-by: Raghu Gandham \u003craghu@mips.com\u003e\n"
    },
    {
      "commit": "ea8fad11d980d55ebd2bcf2302f3f1f742b6351c",
      "tree": "a70cc5c8499f8c830be105fcb89c506a03ab5192",
      "parents": [
        "1ee6e3b7370b36ac72a14c0e31c34963b1bdbbb2"
      ],
      "author": {
        "name": "Michael Hope",
        "email": "michael.hope@linaro.org",
        "time": "Tue Jul 31 16:18:22 2012 +1200"
      },
      "committer": {
        "name": "Michael Hope",
        "email": "michael.hope@linaro.org",
        "time": "Tue Jul 31 16:18:22 2012 +1200"
      },
      "message": "Add a .note.android.ident section to Android ELF binaries.\n\nThis allows debugging tools to know they are working with Android\nbinaries and adapt accordingly.\n\nSigned-off-by: Thiago Jung Bauermann \u003cthiago.bauermann@linaro.org\u003e\nSigned-off-by: Michael Hope \u003cmichael.hope@linaro.org\u003e\n\nChange-Id: Ic906992fcad61c028bb765821637a3e1333bf52b\n"
    },
    {
      "commit": "52d6233296ec84eb5b58fcbf7bc9da4b96a943aa",
      "tree": "b0186ce62c2aedc309501f0bfc641a291d91d3e6",
      "parents": [
        "a7916509a3446afd0e863b03e4204cee73e81555"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 27 17:40:29 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Jul 27 17:43:38 2012 -0700"
      },
      "message": "Report errors to the log, not just stderr.\n\nIn particular this affects assert(3) and __cxa_pure_virtual, both of\nwhich have managed to confuse people this week by apparently aborting\nwithout reason. (Because stderr goes nowhere, normally.)\n\nBug: 6852995\nBug: 6840813\nChange-Id: I7f5d17d5ddda439e217b7932096702dc013b9142\n"
    },
    {
      "commit": "c20d0f3993ebb0d3dec958a306a68ebb48bfeadd",
      "tree": "730e43282d52f7a419a46baf3d6998e976e1651b",
      "parents": [
        "f6ee33cee717f9878d3a43bf76c35547649676d7"
      ],
      "author": {
        "name": "Jens Gulin",
        "email": "jens.gulin@sonymobile.com",
        "time": "Thu Jul 19 14:10:46 2012 +0200"
      },
      "committer": {
        "name": "Johan Redestig",
        "email": "johan.redestig@sonymobile.com",
        "time": "Fri Jul 27 15:18:23 2012 +0200"
      },
      "message": "Correction to use of TEMP_FAILURE_RETRY in send_prop_msg\n\nRETRY macro may retry command if result is -1. In this\ncase the command was \"connect \u003c 0\" instead of just\nconnect. The comparison will not return -1 and thus\nretry is never done. This is now corrected so that\ninterrupts will cause retry instead of fail.\n\n(There was no other negative side effect of the bug.\nThe result code from RETRY was used in an if-statement\nand it would be true for all negative connect results.\nThis was according to expectations.)\n\nChange-Id: Ie206b39878e9befea4e3be9a4061ee39eb232d80\n"
    },
    {
      "commit": "f2ba5c9afa750cc5b7cd4737071b73ce1f01f252",
      "tree": "fc6981e1b86f32f402c30a5286388e2302a98f3b",
      "parents": [
        "ece8f502ed6f2915bd27187cd016d85f4481f6e1",
        "63c4179f5951edc2d68700fe75659fbd34febe63"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jun 19 11:33:19 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 11:33:19 2012 -0700"
      },
      "message": "am 63c4179f: am 4d0128f1: Merge \"Minor tweak to get memory around corrupted heap chunks dumped.\" into jb-dev\n\n* commit \u002763c4179f5951edc2d68700fe75659fbd34febe63\u0027:\n  Minor tweak to get memory around corrupted heap chunks dumped.\n"
    },
    {
      "commit": "63c4179f5951edc2d68700fe75659fbd34febe63",
      "tree": "09b387a5f3721cd23603e9ce269bbac1df9b81c5",
      "parents": [
        "c5cab3452d5ced55474e56497594579108670b51",
        "4d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3"
      ],
      "author": {
        "name": "Andy McFadden",
        "email": "fadden@android.com",
        "time": "Tue Jun 19 11:31:14 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Jun 19 11:31:14 2012 -0700"
      },
      "message": "am 4d0128f1: Merge \"Minor tweak to get memory around corrupted heap chunks dumped.\" into jb-dev\n\n* commit \u00274d0128f13a3ca9f7a0c81b6e69f7e20d28e9e6e3\u0027:\n  Minor tweak to get memory around corrupted heap chunks dumped.\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": "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": "3069270d8641c7bb57aa308d8f90b4d2dcbf66fc",
      "tree": "4986b35e70c1586a78148c88f15af55aa1a25e41",
      "parents": [
        "252a5c854a08e89fc7337ea679220161fe4ea98f",
        "c2bba24d0a6b906f00d7b9f20ac9d32d63bb2e9d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 11:35:32 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jun 06 11:35:32 2012 -0700"
      },
      "message": "am c2bba24d: Merge \"Give the timer_create SIGEV_THREAD helper threads sensible names.\"\n\n* commit \u0027c2bba24d0a6b906f00d7b9f20ac9d32d63bb2e9d\u0027:\n  Give the timer_create SIGEV_THREAD helper threads sensible names.\n"
    },
    {
      "commit": "470631ed79538ce912edb94505dee3e24af8db89",
      "tree": "b463bd464e0f4864f444d71639f4b9b9a1149108",
      "parents": [
        "c7882ab2a99a74c8f772ab03fdfd9a3b53515e46"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 10:32:56 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Jun 06 10:32:56 2012 -0700"
      },
      "message": "Give the timer_create SIGEV_THREAD helper threads sensible names.\n\nBug: 6609676\nChange-Id: I286b197c75beee4d9930b0973f2d7dd47c14e91c\n"
    },
    {
      "commit": "252a5c854a08e89fc7337ea679220161fe4ea98f",
      "tree": "8e0e154a5c1c94613138ba8cee0b77b8e34d0a49",
      "parents": [
        "f0ddaa2fac00ac20059c0b2c142da9de2838a7b6",
        "e1dd3c287ba836281de0197670018bd9bbfbd62b"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sat Jun 02 08:14:36 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Sat Jun 02 08:14:36 2012 -0700"
      },
      "message": "resolved conflicts for merge of e1dd3c28 to jb-dev-plus-aosp\n\nChange-Id: I58b9c13d20771aa39b703ec05cbff8aeaad38fe8\n"
    },
    {
      "commit": "f0ddaa2fac00ac20059c0b2c142da9de2838a7b6",
      "tree": "1e17b7a4afcfffe039a39875b468b4dcc4fb919b",
      "parents": [
        "5a095ef28716b54f86d9c1727b9a2493ba775255",
        "7d2e24eb167b6257f7935c7bd2023a708704ca1a"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Jun 01 19:03:06 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Jun 01 19:03:06 2012 -0700"
      },
      "message": "am 7d2e24eb: bionic: introduce libc.debug.malloc.program\n\n* commit \u00277d2e24eb167b6257f7935c7bd2023a708704ca1a\u0027:\n  bionic: introduce libc.debug.malloc.program\n"
    },
    {
      "commit": "e1dd3c287ba836281de0197670018bd9bbfbd62b",
      "tree": "a5138cb21c8de6be4ea4be61e44f95fb8bcb776e",
      "parents": [
        "7d2e24eb167b6257f7935c7bd2023a708704ca1a"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 29 14:22:42 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Fri Jun 01 15:54:34 2012 -0700"
      },
      "message": "bionic: import heaptracker as chk_malloc\n\nThis patch is a rewrite of libc.debug.malloc \u003d 10 (chk_malloc).  It provides\nthe same features as the original (poison freed memory, detect heap overruns\nand underruns), except that it provides more debugging information whenever it\ndetects a problem.\n\nIn addition to the original features, the new chk_malloc() implementation\ndetects multiple frees within a given range of the last N allocations, N being\nconfigurable via the system property libc.debug.malloc.backlog.\n\nFinally, this patch keeps track of all outstanding memory allocations.  On\nprogram exit, we walk that list and report each outstanding allocation.\n\n(There is support (not enabled) for a scanner thread periodically walks over\nthe list of outstanding allocations as well as the backlog of recently-freed\nallocations, checking for heap-usage errors.)\n\nFeature overview:\n\n  1) memory leaks\n  2) multiple frees\n  3) use after free\n  4) overrun\n\nImplementation:\n\n-- for each allocation, there is a:\n  1) stack trace at the time the allocation is made\n  2) if the memory is freed, there is also a stack trace at the point\n  3) a front and rear guard (fence)\n  4) the stack traces are kept together with the allocation\n\n-- the following lists and maintained\n\n  1) all outstanding memory allocations\n  3) a backlog of allocations what are freed; when you call free(), instead of\n     actually freed, the allocation is moved to this backlog;\n  4) when the backlog of allocations gets full, the oldest entry gets evicted\n     from it; at that point, the allocation is checked for overruns or\n     use-after-free errors, and then actually freed.\n  5) when the program exits, the list of outstanding allocations and the\n     backlog are inspected for errors, then freed;\n\nTo use this, set the following system properties before running the process or\nprocesses you want to inspect:\n\nlibc.malloc.debug.backlog # defaults to 100\nlibc.malloc.debug 10\n\nWhen a problem is detected, you will see the following on logcat for a multiple\nfree:\n\nE/libc    ( 7233): +++ ALLOCATION 0x404b9278 SIZE 10 BYTES MULTIPLY FREED!\nE/libc    ( 7233): +++ ALLOCATION 0x404b9278 SIZE 10 ALLOCATED HERE:\nE/libc    ( 7233): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\nE/libc    ( 7233):      #00  pc 0000c35a  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #01  pc 0000c658  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #02  pc 00016d80  /system/lib/libc.so\nE/libc    ( 7233):      #03  pc 4009647c  /system/bin/malloctest\nE/libc    ( 7233):      #04  pc 00016f24  /system/lib/libc.so\nE/libc    ( 7233): +++ ALLOCATION 0x404b9278 SIZE 10 FIRST FREED HERE:\nE/libc    ( 7233): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\nE/libc    ( 7233):      #00  pc 0000c35a  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #01  pc 0000c7d2  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #02  pc 00016d94  /system/lib/libc.so\nE/libc    ( 7233):      #03  pc 40096490  /system/bin/malloctest\nE/libc    ( 7233):      #04  pc 00016f24  /system/lib/libc.so\nE/libc    ( 7233): +++ ALLOCATION 0x404b9278 SIZE 10 NOW BEING FREED HERE:\nE/libc    ( 7233): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\nE/libc    ( 7233):      #00  pc 0000c35a  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #01  pc 0000c6ac  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #02  pc 00016d94  /system/lib/libc.so\nE/libc    ( 7233):      #03  pc 400964a0  /system/bin/malloctest\nE/libc    ( 7233):      #04  pc 00016f24  /system/lib/libc.so\n\nThe following for a heap overrun and underrun:\n\nE/libc    ( 7233): +++ REAR GUARD MISMATCH [10, 11)\nE/libc    ( 7233): +++ ALLOCATION 0x404b9198 SIZE 10 HAS A CORRUPTED REAR GUARD\nE/libc    ( 7233): +++ ALLOCATION 0x404b9198 SIZE 10 ALLOCATED HERE:\nE/libc    ( 7233): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\nE/libc    ( 7233):      #00  pc 0000c35a  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #01  pc 0000c658  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #02  pc 00016d80  /system/lib/libc.so\nE/libc    ( 7233):      #03  pc 40096438  /system/bin/malloctest\nE/libc    ( 7233):      #04  pc 00016f24  /system/lib/libc.so\nE/libc    ( 7233): +++ ALLOCATION 0x404b9198 SIZE 10 FREED HERE:\nE/libc    ( 7233): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\nE/libc    ( 7233):      #00  pc 0000c35a  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #01  pc 0000c7d2  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #02  pc 00016d94  /system/lib/libc.so\nE/libc    ( 7233):      #03  pc 40096462  /system/bin/malloctest\nE/libc    ( 7233):      #04  pc 00016f24  /system/lib/libc.so\nE/libc    ( 7233): +++ ALLOCATION 0x404b9358 SIZE 10 HAS A CORRUPTED FRONT GUARD\nE/libc    ( 7233): +++ ALLOCATION 0x404b9358 SIZE 10 ALLOCATED HERE:\nE/libc    ( 7233): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\nE/libc    ( 7233):      #00  pc 0000c35a  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #01  pc 0000c658  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #02  pc 00016d80  /system/lib/libc.so\nE/libc    ( 7233):      #03  pc 400964ba  /system/bin/malloctest\nE/libc    ( 7233):      #04  pc 00016f24  /system/lib/libc.so\nE/libc    ( 7233): +++ ALLOCATION 0x404b9358 SIZE 10 FREED HERE:\nE/libc    ( 7233): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\nE/libc    ( 7233):      #00  pc 0000c35a  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #01  pc 0000c7d2  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #02  pc 00016d94  /system/lib/libc.so\nE/libc    ( 7233):      #03  pc 400964e4  /system/bin/malloctest\nE/libc    ( 7233):      #04  pc 00016f24  /system/lib/libc.so\n\nThe following for a memory leak:\n\nE/libc    ( 7233): +++ THERE ARE 1 LEAKED ALLOCATIONS\nE/libc    ( 7233): +++ DELETING 4096 BYTES OF LEAKED MEMORY AT 0x404b95e8 (1 REMAINING)\nE/libc    ( 7233): +++ ALLOCATION 0x404b95e8 SIZE 4096 ALLOCATED HERE:\nE/libc    ( 7233): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***\nE/libc    ( 7233):      #00  pc 0000c35a  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #01  pc 0000c658  /system/lib/libc_malloc_debug_leak.so\nE/libc    ( 7233):      #02  pc 00016d80  /system/lib/libc.so\nE/libc    ( 7233):      #03  pc 0001bc94  /system/lib/libc.so\nE/libc    ( 7233):      #04  pc 0001edf6  /system/lib/libc.so\nE/libc    ( 7233):      #05  pc 0001b80a  /system/lib/libc.so\nE/libc    ( 7233):      #06  pc 0001c086  /system/lib/libc.so\nE/libc    ( 7233):      #07  pc 40096402  /system/bin/malloctest\nE/libc    ( 7233):      #08  pc 00016f24  /system/lib/libc.so\n\nChange-Id: Ic440e9d05a01e2ea86b25e8998714e88bc2d16e0\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "7d2e24eb167b6257f7935c7bd2023a708704ca1a",
      "tree": "827446ee24c7175462c76278a56db005233bbcaf",
      "parents": [
        "03539a36b634bdfa61c06277cf25e0ca8e3105ba"
      ],
      "author": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Tue May 29 16:46:17 2012 -0700"
      },
      "committer": {
        "name": "Iliyan Malchev",
        "email": "malchev@google.com",
        "time": "Wed May 30 20:03:47 2012 -0700"
      },
      "message": "bionic: introduce libc.debug.malloc.program\n\nlibc.debug.malloc.program  provides an additional level of control over which\nprocesses to enable libc.debug.malloc functionality for.  The string value of\nlibc.debug.malloc.program is matched against the program name; if the value of\nlibc.debug.malloc.program is a substring of the program name, then malloc debug\nis applied to that program at whatever level libc.debug.malloc specifies.\n\nIf lib.debug.malloc.program is not specified, then libc.debug.malloc has the\nsame effect as before.\n\nFor example, to enable libc.deubug.malloc \u003d 10 only to the mediaserver, do the\nfollowing:\n\n   adb root # necessary for setprop\n   adb setprop libc.debug.malloc.program mediaserver\n   adb setprop libc.debug.malloc 10\n   adb kill -9 $(pid mediaserver)\n\nChange-Id: I6f01c12f033c8e2e015d73025369d7f1685ba200\nSigned-off-by: Iliyan Malchev \u003cmalchev@google.com\u003e\n"
    },
    {
      "commit": "d7b60b207be79513b99faf2ef576db333f9c7a78",
      "tree": "01c67f99eac10327b6db5a2fb0828bb343fa8ae5",
      "parents": [
        "d155ba57a32ce3182d8a5b79ff27bc5e7fa55df9",
        "c84ff11dad26435dc5760bceda18e8f1175a6061"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Thu May 24 17:21:03 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Thu May 24 17:21:03 2012 -0700"
      },
      "message": "am c84ff11d: Print the corrupted address passed to free().\n\n* commit \u0027c84ff11dad26435dc5760bceda18e8f1175a6061\u0027:\n  Print the corrupted address passed to free().\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": "eab2889e66d4fe03f3c5590d7e8b14e3777179ec",
      "tree": "e6bd597b9ce06b879ecc83b5b517c33ab5523184",
      "parents": [
        "57f8d4b5b5564fad7a9c7f8a6e5108f31c75056f",
        "fd95503347acba5c52d669a186ad2b161338a8a7"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed May 09 12:53:16 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 09 12:53:16 2012 -0700"
      },
      "message": "am fd955033: Merge \"pthread: Invalidate stale stack pointers on pthread_exit()\"\n\n* commit \u0027fd95503347acba5c52d669a186ad2b161338a8a7\u0027:\n  pthread: Invalidate stale stack pointers on pthread_exit()\n"
    },
    {
      "commit": "0753dc653eb3b84d3490212437e7490975d4c020",
      "tree": "19e15b19489d3b3031b11256aee077f29cb9cccc",
      "parents": [
        "3919b96eccb6d78f71f6d19b3ebfacec93cbca1f"
      ],
      "author": {
        "name": "Bjorn Andersson",
        "email": "bjorn.andersson@sonymobile.com",
        "time": "Thu May 03 17:12:39 2012 -0700"
      },
      "committer": {
        "name": "Bjorn Andersson",
        "email": "bjorn.andersson@sonymobile.com",
        "time": "Tue May 08 17:43:57 2012 -0700"
      },
      "message": "pthread: Invalidate stale stack pointers on pthread_exit()\n\nA call to pthread_key_delete() after pthread_exit() have unmapped the stack of a thread\nbut before the ongoing pthread_join() have finished executing will result in an access\nto unmapped memory.\nAvoid this by invalidating the stack_base and tls pointers during pthread_exit().\n\nThis is based on the investigation and proprosed solution by\nSrinavasa Nagaraju \u003csrinavasa.x.nagaraju@sonyericsson.com\u003e\n\nChange-Id: I145fb5d57930e91b00f1609d7b2cd16a55d5b3a9\n"
    },
    {
      "commit": "9c3eca7bcee694e6a477a7d50065f11cf1e805bb",
      "tree": "abb36a7c1f2f13d54caad0f5a8175e47dd153730",
      "parents": [
        "ff0d1ce4dfceb35a65440259c3f325106fc9e39b",
        "6cf3c7c50a4b9bc8425562c542f6a3d320db70c3"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 08 13:26:28 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 08 13:26:28 2012 -0700"
      },
      "message": "resolved conflicts for merge of 6cf3c7c5 to jb-dev-plus-aosp\n\nChange-Id: Ib22a8ae1ef63bf9b9c82ce6e22afd188ba7c2806\n"
    },
    {
      "commit": "d0c884d3595ecca03c3e70de9909c090cd5f9cae",
      "tree": "a15fbefbe3ffcf1fc111ec284a1c62dcf3beddc6",
      "parents": [
        "e3bc7192ec4254bed00eb8b352735665c6072995"
      ],
      "author": {
        "name": "Pierre Peiffer",
        "email": "pierre.peiffer@stericsson.com",
        "time": "Wed Feb 22 16:40:15 2012 +0100"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue May 08 10:54:51 2012 -0700"
      },
      "message": "Let pthread_create fail if schedparam can\u0027t be set\n\nThe creation of a thread succeeds even if the requested scheduling\nparameters can not be set. This is not POSIX compliant, and even\nworse, it leads to a wrong behavior. Let pthread_create() fail in this\ncase.\n\nChange-Id: Ice66e2a720975c6bde9fe86c2cf8f649533a169c\nSigned-off-by: Christian Bejram \u003cchristian.bejram@stericsson.com\u003e\n"
    },
    {
      "commit": "ff0d1ce4dfceb35a65440259c3f325106fc9e39b",
      "tree": "6d9df1152576b732ece9ed7f6f18a25b8845ea71",
      "parents": [
        "53daf4757d36522c132006e2f74ed81bb4ed717a",
        "e3bc7192ec4254bed00eb8b352735665c6072995"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 07 14:00:01 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon May 07 14:00:01 2012 -0700"
      },
      "message": "am e3bc7192: Merge \"bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()\"\n\n* commit \u0027e3bc7192ec4254bed00eb8b352735665c6072995\u0027:\n  bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()\n"
    },
    {
      "commit": "7f5aa4f35e23fd37425b3a5041737cdf58f87385",
      "tree": "297292e79911ba15c8b6e0faf1a9c0bc6710f0ba",
      "parents": [
        "73a6566da337db50cfc73c369d774ac1905a30c2"
      ],
      "author": {
        "name": "Xi Wang",
        "email": "xi.wang@gmail.com",
        "time": "Wed Mar 14 02:48:39 2012 -0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon May 07 10:50:21 2012 -0700"
      },
      "message": "bionic: fix integer overflows in chk_malloc(), leak_malloc(), and leak_memalign()\n\nThe allocation size in chk_malloc(), leak_malloc(), and leak_memalign()\nfunctions may be rounded up to a small value, leading to buffer overflows.\nThe code only runs in debugging mode.\n\nThis patch complements commit 6f04a0f4 (CVE-2009-0607).\n\nChange-Id: Id899bcd2bcd2ea2205e5753c433390710032dc83\nSigned-off-by: Xi Wang \u003cxi.wang@gmail.com\u003e\n"
    },
    {
      "commit": "6baffed252d0efbce5a79f356c2f156f4f818996",
      "tree": "68679119ced92e19b1bfd505239fc8a2e2961efe",
      "parents": [
        "1e343cb119fde897b0eb6503f114edf20e9b3532"
      ],
      "author": {
        "name": "Ken Sumrall",
        "email": "ksumrall@android.com",
        "time": "Wed Dec 14 20:50:01 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Fri Apr 27 09:34:53 2012 -0700"
      },
      "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": "1a78fbb5c8228e4aea2a516818828b76044310f2",
      "tree": "4de785711dbfa8923d721f9180473328b6228a5c",
      "parents": [
        "d5099016f70b5acbfeb969787687099df703a4f4"
      ],
      "author": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Thu Mar 22 18:01:53 2012 +0400"
      },
      "committer": {
        "name": "Evgeniy Stepanov",
        "email": "eugenis@google.com",
        "time": "Fri Apr 13 00:08:11 2012 +0400"
      },
      "message": "Initialize TLS before any application code is run.\n\nSince e19d702b8e33, dlsym and friends use recursive mutexes that\nrequire the current thread id, which is not available before the libc\nconstructor. This prevents us from using dlsym() in .preinit_array.\n\nThis change moves TLS initialization from libc constructor to the earliest\npossible point - immediately after linker itself is relocated. As a result,\npthread_internal_t for the initial thread is available from the start.\n\nAs a bonus, values stored in TLS in .preinit_array are not lost when libc is\ninitialized.\n\nChange-Id: Iee5a710ee000173bff63e924adeb4a4c600c1e2d\n"
    },
    {
      "commit": "faca92f2f17cea192c5fbde4d869aa7620315196",
      "tree": "e8cbfe294c0b00a9de2c928d4cbe9ac915fd0ca7",
      "parents": [
        "126601dd3f5303b50033dcb88945d928aa764aa4"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Mar 26 15:25:19 2012 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Mar 26 15:38:59 2012 -0700"
      },
      "message": "Handle pthread-related changes (mutex/atfork)\n\nFirst commit:\n\nRevert \"Revert \"am be741d47: am 2f460fbe: am 73b5cad9: Merge \"bionic: Fix wrong kernel_id in pthread descriptor after fork()\"\"\"\n\nThis reverts commit 06823da2f0c8b4a4ce4c45113032f03df85c94b8.\n\nSecond commit:\n\nbionic: fix atfork hanlder_mutex deadlock\n\nThis cherry-picks commit 34e89c232dd5645fe3b5f9b40856d8e3e4cae57a\n\nAfter applying the kernel_id fix, the system refused to boot up and we\ngot following crash log:\nI/DEBUG   (  113): pid: 618, tid: 618  \u003e\u003e\u003e org.simalliance.openmobileapi.service:remote \u003c\u003c\u003c\nI/DEBUG   (  113): signal 16 (SIGSTKFLT), code -6 (?), fault addr --------\nI/DEBUG   (  113):  eax fffffe00  ebx b77de994  ecx 00000080  edx 00724002\nI/DEBUG   (  113):  esi 00000000  edi 00004000\nI/DEBUG   (  113):  xcs 00000073  xds 0000007b  xes 0000007b  xfs 00000000 xss 0000007b\nI/DEBUG   (  113):  eip b7761351  ebp bfdf3de8  esp bfdf3dc4  flags 00000202\nI/DEBUG   (  113):     #00  eip: 00015351  /system/lib/libc.so\nI/DEBUG   (  113):     #01  eip: 0000d13c  /system/lib/libc.so (pthread_mutex_lock)\nI/DEBUG   (  113):     #02  eip: 00077b48  /system/lib/libc.so (__bionic_atfork_run_prepare)\nI/DEBUG   (  113):     #03  eip: 00052cdb  /system/lib/libc.so (fork)\nI/DEBUG   (  113):     #04  eip: 0009ae91  /system/lib/libdvm.so (_Z18dvmOptimizeDexFileillPKcjjb)\nI/DEBUG   (  113):     #05  eip: 000819d6  /system/lib/libdvm.so (_Z14dvmJarFileOpenPKcS0_PP7JarFileb)\nI/DEBUG   (  113):     #06  eip: 000b175e  /system/lib/libdvm.so (_ZL40Dalvik_dalvik_system_DexFile_openDexFilePKjP6JValue)\nI/DEBUG   (  113):     #07  eip: 0011fb94  /system/lib/libdvm.so\n\nRoot cause:\nThe atfork uses the mutex handler_mutex to protect the atfork_head. The\nparent will call __bionic_atfork_run_prepare() to lock the handler_mutex,\nand need both the parent and child to unlock their own copy of handler_mutex\nafter fork. At that time, the owner of hanlder_mutex is set as the parent.\nIf we apply the kernel_id fix, then the child\u0027s kernel_id will be set as\nchild\u0027s tid.\nThe handler_mutex is a recursive lock, and pthread_mutex_unlock(\u0026hander_mutex)\nwill fail because the mutex owner is the parent, while the current tid\n(__get_thread()-\u003ekernel_id) is child, not matched with the mutex owner.\nAt that time, the handler_mutex is left in lock state.If the child wants to\nfork other process after than, then it will try to lock handler_mutex, and\nthen be deadlocked.\n\nFix:\nSince the child has its own copy of vm space from the the parent, the\nchild space\u0027s handler_mutex should be reset to the initialized state.\n\nChange-Id: I3907dd9a153418fb78862f2aa6d0302c375d9e27\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Chenyang Du \u003cchenyang.du@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n\nChange-Id: Ic8072f366a877443a60fe215f3c00b3df5a259c8\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": "21eab513e7eec280a7a8bcb9482a1a8b61e59442",
      "tree": "28ba8f7977161897ebddf533fb8e09755a6f35d7",
      "parents": [
        "adb6989786dcc7248d51a3a5a76221b93951f84a"
      ],
      "author": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue Mar 13 23:04:57 2012 -0700"
      },
      "committer": {
        "name": "Ben Cheng",
        "email": "bccheng@google.com",
        "time": "Tue Mar 20 12:54:55 2012 -0700"
      },
      "message": "New additions/bug fixes required/found when porting perf.\n\nNew functions:\n\ttfind\n\ttsearch\n\ttdelete\n\ttwalk\n\ttdestroy (GNU extension)\n\nBug fix: the current implementation for realpath would crash\n\tif the second argument (resolved_path) is NULL.\n\nNew headers:\n\tar.h\n\tsearch.h\n\nChange-Id: Ib6c1e42fc186a6d597a6e5a9692b16acaa155804\n"
    },
    {
      "commit": "34e89c232dd5645fe3b5f9b40856d8e3e4cae57a",
      "tree": "22b5dd0a852417d06cfda795ef04a65d0f5e859d",
      "parents": [
        "73b5cad989da317cc8089b57ee25f502b1cac71f"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Fri Mar 16 16:37:35 2012 +0800"
      },
      "committer": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Sat Mar 17 17:08:54 2012 +0800"
      },
      "message": "bionic: fix atfork hanlder_mutex deadlock\n\nAfter applying the kernel_id fix, the system refused to boot up and we\ngot following crash log:\nI/DEBUG   (  113): pid: 618, tid: 618  \u003e\u003e\u003e org.simalliance.openmobileapi.service:remote \u003c\u003c\u003c\nI/DEBUG   (  113): signal 16 (SIGSTKFLT), code -6 (?), fault addr --------\nI/DEBUG   (  113):  eax fffffe00  ebx b77de994  ecx 00000080  edx 00724002\nI/DEBUG   (  113):  esi 00000000  edi 00004000\nI/DEBUG   (  113):  xcs 00000073  xds 0000007b  xes 0000007b  xfs 00000000 xss 0000007b\nI/DEBUG   (  113):  eip b7761351  ebp bfdf3de8  esp bfdf3dc4  flags 00000202\nI/DEBUG   (  113):     #00  eip: 00015351  /system/lib/libc.so\nI/DEBUG   (  113):     #01  eip: 0000d13c  /system/lib/libc.so (pthread_mutex_lock)\nI/DEBUG   (  113):     #02  eip: 00077b48  /system/lib/libc.so (__bionic_atfork_run_prepare)\nI/DEBUG   (  113):     #03  eip: 00052cdb  /system/lib/libc.so (fork)\nI/DEBUG   (  113):     #04  eip: 0009ae91  /system/lib/libdvm.so (_Z18dvmOptimizeDexFileillPKcjjb)\nI/DEBUG   (  113):     #05  eip: 000819d6  /system/lib/libdvm.so (_Z14dvmJarFileOpenPKcS0_PP7JarFileb)\nI/DEBUG   (  113):     #06  eip: 000b175e  /system/lib/libdvm.so (_ZL40Dalvik_dalvik_system_DexFile_openDexFilePKjP6JValue)\nI/DEBUG   (  113):     #07  eip: 0011fb94  /system/lib/libdvm.so\n\nRoot cause:\nThe atfork uses the mutex handler_mutex to protect the atfork_head. The\nparent will call __bionic_atfork_run_prepare() to lock the handler_mutex,\nand need both the parent and child to unlock their own copy of handler_mutex\nafter fork. At that time, the owner of hanlder_mutex is set as the parent.\nIf we apply the kernel_id fix, then the child\u0027s kernel_id will be set as\nchild\u0027s tid.\nThe handler_mutex is a recursive lock, and pthread_mutex_unlock(\u0026hander_mutex)\nwill fail because the mutex owner is the parent, while the current tid\n(__get_thread()-\u003ekernel_id) is child, not matched with the mutex owner.\nAt that time, the handler_mutex is left in lock state.If the child wants to\nfork other process after than, then it will try to lock handler_mutex, and\nthen be deadlocked.\n\nFix:\nSince the child has its own copy of vm space from the the parent, the\nchild space\u0027s handler_mutex should be reset to the initialized state.\n\nChange-Id: I3907dd9a153418fb78862f2aa6d0302c375d9e27\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Chenyang Du \u003cchenyang.du@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "06823da2f0c8b4a4ce4c45113032f03df85c94b8",
      "tree": "eacafbaa2b301b0e28ab145cb4f28e10ae2fd212",
      "parents": [
        "76d56cf4a94e875a8b621025e2780775247adb6e"
      ],
      "author": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Mon Mar 12 22:05:36 2012 -0700"
      },
      "committer": {
        "name": "Guang Zhu",
        "email": "guangzhu@google.com",
        "time": "Mon Mar 12 22:05:36 2012 -0700"
      },
      "message": "Revert \"am be741d47: am 2f460fbe: am 73b5cad9: Merge \"bionic: Fix wrong kernel_id in pthread descriptor after fork()\"\"\n\nThis reverts commit 76d56cf4a94e875a8b621025e2780775247adb6e, reversing\nchanges made to c59ba4595be25a1213955233fcf9bcd1afe6438e.\n\nBug: 6157577\n"
    },
    {
      "commit": "76d56cf4a94e875a8b621025e2780775247adb6e",
      "tree": "9101c17f6134d7c2f18a956fb50816695689e888",
      "parents": [
        "c59ba4595be25a1213955233fcf9bcd1afe6438e",
        "be741d472868a8ffcb455588f18cda889b0f465c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Mar 12 17:12:35 2012 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Mar 12 17:12:35 2012 -0700"
      },
      "message": "am be741d47: am 2f460fbe: am 73b5cad9: Merge \"bionic: Fix wrong kernel_id in pthread descriptor after fork()\"\n\n* commit \u0027be741d472868a8ffcb455588f18cda889b0f465c\u0027:\n  bionic: Fix wrong kernel_id in pthread descriptor after fork()\n"
    },
    {
      "commit": "d8bc6e7119450f263afcf89c8b581f6aaa23d186",
      "tree": "00a129ca73e415545e7a629ceb1ec4e7bbe525ef",
      "parents": [
        "a58c88c235bfeeb17ac495991e66f7b906935852"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Tue Jan 17 16:27:42 2012 +0800"
      },
      "committer": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Mon Mar 12 23:14:56 2012 +0800"
      },
      "message": "bionic: Fix wrong kernel_id in pthread descriptor after fork()\n\nAfter forking, the kernel_id field in the phtread_internal_t returned by pthread_self()\nis incorrect --- it\u0027s the tid from the parent, not the new tid of the\nchild.\n\nThe root cause is that: currently the kernel_id is set by\n_init_thread(), which is called in 2 cases:\n(1) called by __libc_init_common(). That happens when the execv( ) is\ncalled after fork( ). But when the zygote tries to fork the android\napplication, the child application doesn\u0027t call execv( ), instread, it\ntries to call the Java main method directly.\n(2) called by pthread_create(). That happens when a new thread is\ncreated.\n\nFor the lead thread which is the thread created by fork(), it should\ncall execv() but it doesn\u0027t, as described in (1) above. So its kernel_id\nwill inherit the parent\u0027s kernel_id.\n\nFixed it in this patch.\n\nChange-Id: I63513e82af40ec5fe51fbb69456b1843e4bc0fc7\nSigned-off-by: Chenyang Du \u003cchenyang.du@intel.com\u003e\nSigned-off-by: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "058d6d88b959efc00d7ba9777e447bc55c409569",
      "tree": "267905681e7975a066a9ba4682f583a2747e001b",
      "parents": [
        "1625c7a837d73b6729f97edb32c497d289c0220c"
      ],
      "author": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 09 16:14:28 2012 -0800"
      },
      "committer": {
        "name": "Dianne Hackborn",
        "email": "hackbod@google.com",
        "time": "Thu Feb 09 16:14:28 2012 -0800"
      },
      "message": "Update bionic to know users and isolated uids for uid string representation.\n\nChange-Id: I6681bacd69299a7f9837ef8025a80c5562081bad\n"
    },
    {
      "commit": "e1414aa96bb62057b1a25c6a9ea1797dd38dce59",
      "tree": "86dd372e2ea90adceefa57cf324fc29c5ae64faf",
      "parents": [
        "b70659d8ea4a0f67694125a340186da96afa4210"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jan 24 15:26:54 2012 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jan 30 10:13:41 2012 +0100"
      },
      "message": "libc: remove global lock from recursive mutex implementation.\n\nThis optimization improves the performance of recursive locks\ndrastically. When running the thread_stress program on a Xoom,\nthe total time to perform all operations goes from 1500 ms to\n500 ms on average after this change is pushed to the device.\n\nChange-Id: I5d9407a9191bdefdaccff7e7edefc096ebba9a9d\n"
    },
    {
      "commit": "b57db7581cabb98651c4d8940d65c5c404b914ad",
      "tree": "f2f75b325541d06da64cb6a2d6e1a58771b2e30e",
      "parents": [
        "79fcc6948d139878b9ae0423c2fe804636433ad8"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jan 24 13:20:38 2012 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Tue Jan 24 13:20:38 2012 +0100"
      },
      "message": "libc: Fix recursive mutex lock implementation.\n\nThis fixes a bug that was introduced in the latest pthread optimization.\nIt happens when a recursive lock is contented by several threads. The main\nissue was that the atomic counter increment in _recursive_increment() could\nbe annihilated by a non-conditional write in pthread_mutex_lock() used to\nupdate the value\u0027s lower bits to indicate contention.\n\nThis patch re-introduces the use of the global recursive lock in\n_recursive_increment(). This will hit performance, but a future patch\nwill be provided to remove it from the source code.\n\nChange-Id: Ie22069d376cebf2e7d613ba00b6871567f333544\n"
    },
    {
      "commit": "68d03fdbd8eb4d0e40dcdfbfa5e6c6dd931b467a",
      "tree": "ef8b4301dea68af3d466bc4f679c732c5d40e7a3",
      "parents": [
        "6519c8124ee9f2b1ed341cc683b78cf26809678d",
        "7c0c3793722aea293c45921ef50e4adcdf9645ce"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Thu Jan 05 14:05:30 2012 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Thu Jan 05 14:05:30 2012 -0800"
      },
      "message": "Merge \"implement pthread mutex deadlock detection\""
    },
    {
      "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": "7c0c3793722aea293c45921ef50e4adcdf9645ce",
      "tree": "f8cf3c609929a34bbdf40d83396545f00d1fd6b5",
      "parents": [
        "022d303116f742cd337852d37547e2ea24d97a25"
      ],
      "author": {
        "name": "Mathias Agopian",
        "email": "mathias.agopian@gmail.com",
        "time": "Mon Sep 05 23:54:55 2011 -0700"
      },
      "committer": {
        "name": "Mathias Agopian",
        "email": "mathias@google.com",
        "time": "Fri Dec 09 14:38:57 2011 -0800"
      },
      "message": "implement pthread mutex deadlock detection\n\nthis works by building a directed graph of acquired\npthread mutexes and making sure there are no loops in\nthat graph.\n\nthis feature is enabled with:\n\n    setprop debug.libc.pthread 1\n\nwhen a potential deadlock is detected, a large warning is\noutput to the log with appropriate back traces.\n\ncurrently disabled at compile-time. set PTHREAD_DEBUG_ENABLED\u003d1\nto enable.\n\nChange-Id: I916eed2319599e8aaf8f229d3f18a8ddbec3aa8a\n"
    },
    {
      "commit": "022d303116f742cd337852d37547e2ea24d97a25",
      "tree": "cf4b8c74b7cd13fb0eb0e470ae7f81379436c2c8",
      "parents": [
        "6c6de44f0479b202c39555f5c22ef8c494837d3c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 07 14:02:17 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 07 22:09:48 2011 +0100"
      },
      "message": "libc: optimize pthread mutex lock/unlock operations (1/2)\n\nThis patch provides several small optimizations to the\nimplementation of mutex locking and unlocking. Note that\na following patch will get rid of the global recursion\nlock, and provide a few more aggressive changes, I\nthough it\u0027d be simpler to split this change in two parts.\n\n+ New behaviour: pthread_mutex_lock et al now detect\n  recursive mutex overflows and will return EAGAIN in\n  this case, as suggested by POSIX. Before, the counter\n  would just wrap to 0.\n\n- Remove un-necessary reloads of the mutex value from memory\n  by storing it in a local variable (mvalue)\n\n- Remove un-necessary reload of the mutex value by passing\n  the \u0027shared\u0027 local variable to _normal_lock / _normal_unlock\n\n- Remove un-necessary reload of the mutex value by using a\n  new macro (MUTEX_VALUE_OWNER()) to compare the thread id\n  for recursive/errorcheck mutexes\n\n- Use a common inlined function to increment the counter\n  of a recursive mutex. Also do not use the global\n  recursion lock in this case to speed it up.\n\nChange-Id: I106934ec3a8718f8f852ef547f3f0e9d9435c816\n"
    },
    {
      "commit": "6c6de44f0479b202c39555f5c22ef8c494837d3c",
      "tree": "cad3f812fe4ac0edab614c73fab734d98bf06a63",
      "parents": [
        "6e9d51701eabe26d2132a214e07b10384ea60a8c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 07 12:20:44 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Dec 07 22:06:36 2011 +0100"
      },
      "message": "libc: optimize pthread_once() implementation.\n\nThis patch changes the implementation of pthread_once()\nto avoid the use of a single global recursive mutex. This\nshould also slightly speed up the non-common case where\nwe have to call the init function, or wait for another\nthread to finish the call.\n\nChange-Id: I8a93f4386c56fb89b5d0eb716689c2ce43bdcad9\n"
    },
    {
      "commit": "6e9d51701eabe26d2132a214e07b10384ea60a8c",
      "tree": "bc353c391d47c583d3b395683a0f069a72ce6112",
      "parents": [
        "c5819d427de4186780391d7e067850a9e4a09ec7",
        "a73de44b7c0a50908ea8afe16134316cfc6cfbbe"
      ],
      "author": {
        "name": "Rabin Vincent",
        "email": "rabin.vincent@stericsson.com",
        "time": "Tue Dec 06 16:04:56 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue Dec 06 16:04:56 2011 -0800"
      },
      "message": "am a73de44b: am 177ba8cb: Prevent deadlock when using fork\n\n* commit \u0027a73de44b7c0a50908ea8afe16134316cfc6cfbbe\u0027:\n  Prevent deadlock when using fork\n"
    },
    {
      "commit": "177ba8cb42ed6d232e7c8bcad5e6ee21fc51a0e8",
      "tree": "03f7fbd00c889bd2069b088f769e53ff9cfd40e9",
      "parents": [
        "e4a21c89a8b24b32f7a2637b45522dfa59f2aaa4"
      ],
      "author": {
        "name": "Rabin Vincent",
        "email": "rabin.vincent@stericsson.com",
        "time": "Fri Apr 08 08:50:48 2011 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Dec 06 08:39:18 2011 -0800"
      },
      "message": "Prevent deadlock when using fork\n\nWhen forking of a new process in bionic, it is critical that it\ndoes not allocate any memory according to the comment in\njava_lang_ProcessManager.c:\n\"Note: We cannot malloc() or free() after this point!\nA no-longer-running thread may be holding on to the heap lock, and\nan attempt to malloc() or free() would result in deadlock.\"\nHowever, as fork is using standard lib calls when tracing it a bit,\nthey might allocate memory, and thus causing the deadlock.\nThis is a rewrite so that the function cpuacct_add, that fork calls,\nwill use system calls instead of standard lib calls.\n\nSigned-off-by: christian bejram \u003cchristian.bejram@stericsson.com\u003e\n\nChange-Id: Iff22ea6b424ce9f9bf0ac8e9c76593f689e0cc86\n"
    },
    {
      "commit": "c5819d427de4186780391d7e067850a9e4a09ec7",
      "tree": "0d012d23687824a0f5a99d1e3ec886957e703073",
      "parents": [
        "6d77a81456610b6720482459596c3af58058d8b9",
        "35765066b921a5bce26e3799b9e20c661771adfc"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Dec 06 08:35:08 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Dec 06 08:35:08 2011 -0800"
      },
      "message": "Merge 35765066 from ics-mr1-plus-aosp\n\nChange-Id: Ibaeb49dc20f3c736417d5cb68769e7b501a61632\n"
    },
    {
      "commit": "e4a21c89a8b24b32f7a2637b45522dfa59f2aaa4",
      "tree": "2eeac63eccc2d9f120e9626fcd5ed44974bb0e36",
      "parents": [
        "cb1df9161666db2a312814752de67fc623149a9b"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Mon Dec 05 11:25:37 2011 -0800"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Mon Dec 05 18:37:33 2011 -0800"
      },
      "message": "signal: Align the sigset_t size passed to from user space to kernel.\n\nPass kernel space sigset_t size to __rt_sigprocmask to workaround\nthe miss-match of NSIG/sigset_t definition between kernel and bionic.\n\nNote: Patch originally from Google...\nChange-Id: I4840fdc56d0b90d7ce2334250f04a84caffcba2a\nSigned-off-by: Chenyang Du \u003cchenyang.du@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "aed4a4c90b46f9e91ef2a52a3360a990cca957e7",
      "tree": "ff3c459788b55e2801f11582a6c18b51fae3cdf1",
      "parents": [
        "253b7631606e47de720f38082394a5791fe4bf0d",
        "75039bafde8e6f03caffa9d6aa7142a09ba50952"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Mon Dec 05 17:02:20 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Dec 05 17:02:20 2011 -0800"
      },
      "message": "am 75039baf: am 89d3fdca: MALLOC_DEBUG: enable the option libc.debug.malloc \u003d 10\n\n* commit \u002775039bafde8e6f03caffa9d6aa7142a09ba50952\u0027:\n  MALLOC_DEBUG: enable the option libc.debug.malloc \u003d 10\n"
    },
    {
      "commit": "89d3fdcae26980bf81a4622c3c83e48ead4c1c3a",
      "tree": "c58fbe8957357a72479ee8b409d9233ede22f075",
      "parents": [
        "e480fc83b2887388d469eb3bf58c86c610f5b082"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Wed Sep 21 12:44:05 2011 +0200"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Mon Dec 05 14:58:55 2011 -0800"
      },
      "message": "MALLOC_DEBUG: enable the option libc.debug.malloc \u003d 10\n\nFix the compile warning to let the libc.debug.malloc\u003d10 works well\nDue to unsuitable value comparison, which cause compiler optimize the\ncode of comparing two digits.\n\nChange-Id: I0bedd596c9ca2ba308fb008da20ecb328d8548f5\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\nAuthor: liu chuansheng \u003cchuansheng.liu@intel.com\u003e\n"
    },
    {
      "commit": "bec5dec947b1ad097c200888365a3ec61f9e7a28",
      "tree": "ee6d8a4aa949c13c9f2e95da9936972b53ebe242",
      "parents": [
        "338a06f4bcb12c4418e66a6c3210a236259c1bf8",
        "0c3d21e63c6e75ae73aaf2b8d64af0bd8caa6beb"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Wed Nov 30 10:50:59 2011 -0800"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Nov 30 10:50:59 2011 -0800"
      },
      "message": "am 0c3d21e6: am e480fc83: bionic: fix pthread_{create, exit}/signal race condition\n\n* commit \u00270c3d21e63c6e75ae73aaf2b8d64af0bd8caa6beb\u0027:\n  bionic: fix pthread_{create, exit}/signal race condition\n"
    },
    {
      "commit": "e480fc83b2887388d469eb3bf58c86c610f5b082",
      "tree": "c595c2a61a1a4aa4d5049762a0130af7c0442437",
      "parents": [
        "31e72bc3289acdd85b0b745fbf64c5949ca33432"
      ],
      "author": {
        "name": "Jack Ren",
        "email": "jack.ren@intel.com",
        "time": "Wed Sep 21 12:44:11 2011 +0200"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Tue Nov 29 17:09:51 2011 -0800"
      },
      "message": "bionic: fix pthread_{create, exit}/signal race condition\n\n(1) in pthread_create:\n    If the one signal is received before esp is subtracted by 16 and\n    __thread_entry( ) is called, the stack will be cleared by kernel\n    when it tries to contruct the signal stack frame. That will cause\n    that __thread_entry will get a wrong tls pointer from the stack\n    which leads to the segment fault when trying to access tls content.\n\n(2) in pthread_exit\n    After pthread_exit called system call unmap(), its stack will be\n    freed.  If one signal is received at that time, there is no stack\n    available for it.\n\nFixed by subtracting the child\u0027s esp by 16 before the clone system\ncall and by blocking signal handling before pthread_exit is started.\n\nAuthor: Jack Ren \u003cjack.ren@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "95a17848d3a96000f90cdbfc7ff922182f0003b3",
      "tree": "8fff82284e51129617fd070f4bf904f4b70c8351",
      "parents": [
        "f638339d0955ec1d00580842604df7578c40833b",
        "10c8ce59a40a1d8ae8f49145eca365b364aabe58"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Nov 21 13:13:26 2011 -0800"
      },
      "committer": {
        "name": "Android (Google) Code Review",
        "email": "android-gerrit@google.com",
        "time": "Mon Nov 21 13:13:26 2011 -0800"
      },
      "message": "Merge \"Add tgkill syscall.\""
    },
    {
      "commit": "10c8ce59a40a1d8ae8f49145eca365b364aabe58",
      "tree": "5157c1d270cda4e2933a0e7fedf8b5ed6b920f96",
      "parents": [
        "4b469eae40368913b2841b390dada6c58296c602"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 18 15:17:07 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Nov 18 16:40:48 2011 -0800"
      },
      "message": "Add tgkill syscall.\n\nUse tgkill instead of tkill to implement pthread_kill.\nThis is safer in the event that the thread has already terminated\nand its id has been reused by a different process.\n\nChange-Id: Ied715e11d7eadeceead79f33db5e2b5722954ac9\n"
    },
    {
      "commit": "5f64df4bc3bc281f661d520773894c729c2b4835",
      "tree": "2976c55910c4a2c3c8cdaa6b07d1de4d4401de5f",
      "parents": [
        "7e2daefe6cec40e143f519c46aec877ee053b407"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Nov 17 12:58:20 2011 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Nov 18 10:07:12 2011 -0800"
      },
      "message": "ASLR: enable pthread stack location randomization\n\nAllow the kernel to choose a memory location to put the\nthread stack, rather than hard coding 0x10000000\n\nChange-Id: Ib1f37cf0273d4977e8d274fbdab9431ec1b7cb4f\n"
    },
    {
      "commit": "e31bfae2baa96742f998155ee26e56c826a8ce3a",
      "tree": "b12cfb44ad035c26278f42fa9b19095e90b79e95",
      "parents": [
        "8180b08fb2f27052f9df2ae4787bb5bf409f13e0"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Tue Nov 15 15:47:02 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Nov 16 16:28:10 2011 +0100"
      },
      "message": "bionic: Do not use \u003csys/atomics.h\u003e for platform code.\n\nWe\u0027re going to modify the __atomic_xxx implementation to provide\nfull memory barriers, to avoid problems for NDK machine code that\nlink to these functions.\n\nFirst step is to remove their usage from our platform code.\nWe now use inlined versions of the same functions for a slight\nperformance boost.\n\n+ remove obsolete atomics_x86.c (was never compiled)\n\nNOTE: This improvement was benchmarked on various devices.\n      Comparing a pthread mutex lock + atomic increment + unlock\n      we get:\n\n  - ARMv7 emulator, running on a 2.4 GHz Xeon:\n       before: 396 ns    after: 288 ns\n\n  - x86 emulator in KVM mode on same machine:\n       before: 27 ns     after: 27 ns\n\n  - Google Nexus S, in ARMv7 mode (single-core):\n       before: 82 ns     after: 76 ns\n\n  - Motorola Xoom, in ARMv7 mode (multi-core):\n       before: 121 ns    after: 120 ns\n\nThe code has also been rebuilt in ARMv5TE mode for correctness.\n\nChange-Id: Ic1dc72b173d59b2e7af901dd70d6a72fb2f64b17\n"
    },
    {
      "commit": "9bf330b5676d0f60b3e4c3b8985494bcb1134e8b",
      "tree": "b45e394b4e8b7fe8cebb1aa4d04b3131e0c4e48b",
      "parents": [
        "7939908c8310342c8e1b717c4599273a782b3c2b"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Nov 14 12:57:47 2011 +0100"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Nov 14 22:57:24 2011 +0100"
      },
      "message": "libc: fix the pthread_sigmask implementation\n\nThe old code didn\u0027t work because the kernel expects a 64-bit sigset_t\nwhile the one provided by our ABI is only 32-bit. This is originally\ndue to the fact that the kernel headers themselves define sigset_t\nas a 32-bit type when __KERNEL__ is not defined (apparently to cater\nto libc5 or some similarly old C library).\n\nWe can\u0027t modify the size of sigset_t without breaking the NDK ABI,\nso instead perform runtime translation during the call.\n\nChange-Id: Ibfdc3cbceaff864af7a05ca193aa050047b4773f\n"
    },
    {
      "commit": "d53cae0e45dafdb3a83ccc3675051c0aee532111",
      "tree": "c8771059f9c172b0da3b05f7e4903e1225008635",
      "parents": [
        "b8ef90d67950c5d4e04f95c30e164e924f41f70a"
      ],
      "author": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Mon Jul 11 15:41:28 2011 -0700"
      },
      "committer": {
        "name": "Glenn Kasten",
        "email": "gkasten@google.com",
        "time": "Fri Sep 16 12:38:28 2011 -0700"
      },
      "message": "Add non-NDK internal API __pthread_gettid\n\nTracking bugs 5267571 and 5090073 (for deadlock detection logs).\n\nChange-Id: Icb90f91ec1525607551c2234ef921bf88296484f\n"
    },
    {
      "commit": "30e30acf106166bf65ad781bb4a63eead1d2c3a6",
      "tree": "b0a12123fbfa78be81e8b9c9965e964f593606c0",
      "parents": [
        "6b577759b21ca160d72b1fab6454821b950a05e0",
        "6b6ebeca985fb3843b56b507ac4ac1be44080a9c"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Wed Jul 13 14:53:56 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 13 14:53:56 2011 -0700"
      },
      "message": "am 6b6ebeca: am 3a131026: resolved conflicts for merge of 50a83255 to gingerbread-plus-aosp\n\n* commit \u00276b6ebeca985fb3843b56b507ac4ac1be44080a9c\u0027:\n  enable support for large files (\u003e 2G)\n  Enable functional DSO object destruction\n  x86: Enable -fstack-protector\n  Update X86 Bionic CRT files for unwind/exceptions\n  bionic, libthread_db x86 fixes\n  Updated gcc 4.4.3 IA toolchain doesn\u0027t require the .ctors list\n  Remove an extra register move.\n  Replace __atomic_XXX with GCC __sync_XXX intrinsics.\n  move some typedefs to procfs.h required by gdbserver build\n  use consistent guards for off_t and size_t defines for IA\n  Simplify variable typing for IA builds\n  sigsetmask.c was not processing the \"mask\" argument.\n  Add defines for CAIF support\n  Remove extra/unneeded copy of fenv.h\n  Use proper variable typing\n  Update ATOM string routines to latest\n  Fix undefined reference to dl_iterate_phdr for x86\n  Fix missing NL\n  ptrace.c Fix source file format to unix from dos\n"
    },
    {
      "commit": "6b6ebeca985fb3843b56b507ac4ac1be44080a9c",
      "tree": "400a65efcc4271e056cd1f96b802440222da318d",
      "parents": [
        "f2ebd304c3c0822121e6a4d0f542a048a7fc3b20",
        "3a13102637c8be53edf28f96598ac11aaa3e14df"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jul 11 13:25:01 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Jul 11 13:25:01 2011 -0700"
      },
      "message": "am 3a131026: resolved conflicts for merge of 50a83255 to gingerbread-plus-aosp\n\n* commit \u00273a13102637c8be53edf28f96598ac11aaa3e14df\u0027:\n  enable support for large files (\u003e 2G)\n  Enable functional DSO object destruction\n  x86: Enable -fstack-protector\n  Update X86 Bionic CRT files for unwind/exceptions\n  bionic, libthread_db x86 fixes\n  Updated gcc 4.4.3 IA toolchain doesn\u0027t require the .ctors list\n  Remove an extra register move.\n  Replace __atomic_XXX with GCC __sync_XXX intrinsics.\n  move some typedefs to procfs.h required by gdbserver build\n  use consistent guards for off_t and size_t defines for IA\n  Simplify variable typing for IA builds\n  sigsetmask.c was not processing the \"mask\" argument.\n  Add defines for CAIF support\n  Remove extra/unneeded copy of fenv.h\n  Use proper variable typing\n  Update ATOM string routines to latest\n  Fix undefined reference to dl_iterate_phdr for x86\n  Fix missing NL\n  ptrace.c Fix source file format to unix from dos\n"
    },
    {
      "commit": "3a13102637c8be53edf28f96598ac11aaa3e14df",
      "tree": "a8e77af69edd9db40c53b31d1c36b5cae7a2b5c6",
      "parents": [
        "57aadbb096a118dd33f9f16c67bd18dbb6b92c4a",
        "50a83255d80f98b857c3f72dd2225d4bbc720ca3"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jul 11 21:39:06 2011 +0200"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Mon Jul 11 21:39:14 2011 +0200"
      },
      "message": "resolved conflicts for merge of 50a83255 to gingerbread-plus-aosp\n\nChange-Id: Idf1971120bbdd52676f95aa3aa69f62342dc012e\n"
    },
    {
      "commit": "3435fc600d8d78b63a355b519667c23f56d6611b",
      "tree": "131bc5304ff7554ccbc5a74e522e77146a5f645a",
      "parents": [
        "bf296479646e97108174a13b74a6eb11f1bea713"
      ],
      "author": {
        "name": "James Rose",
        "email": "james.rose@intel.com",
        "time": "Tue May 31 10:20:42 2011 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 07 22:46:16 2011 +0200"
      },
      "message": "bionic, libthread_db x86 fixes\n\nOrig-Change-Id: I3be997f5f1f6a894a3c200d4f325cf3bfd428c66\nAuthor: James Rose \u003cjames.rose@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "bf296479646e97108174a13b74a6eb11f1bea713",
      "tree": "90c77798065d7564e1e9e629bc3c3a42ebc41006",
      "parents": [
        "b1dd939e90b86d40250306bce07350c2d60eec13"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Thu Jan 27 10:23:16 2011 -0800"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 07 22:46:16 2011 +0200"
      },
      "message": "Updated gcc 4.4.3 IA toolchain doesn\u0027t require the .ctors list\n\nOrig-Change-Id: Ia840a19a45257128eccdcf25d105f500f2d90741\nSigned-off-by: H.J. Lu \u003chjl.tools@gmail.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "0f2dc2b60cf684f58eefda51b7442c44c10aa492",
      "tree": "b1de5fe531c8e1599ccc1ce9135be8cd9714cf5c",
      "parents": [
        "3f14ff34dfbd00fcffb18b10a1a3e17e2cc5ebdf"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Tue May 31 10:26:08 2011 -0700"
      },
      "committer": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@google.com",
        "time": "Thu Jul 07 22:46:15 2011 +0200"
      },
      "message": "ptrace.c Fix source file format to unix from dos\n\nOrig-Change-Id: Ia771b457eec7f9575d4631fb1c12a7062ebcc7de\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "681c4bd782369e0d42bd02d3ac38a8031270ad7e",
      "tree": "e2a6eb8ea379c07143343938504d9a01e75421b7",
      "parents": [
        "cb5529efd80bc9ae78a8ea5f16f062adda4ec368",
        "b3773e9cc84630fced2117bb57224f0e766c5a26"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Jul 06 13:00:03 2011 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Jul 06 13:00:05 2011 -0700"
      },
      "message": "Merge b3773e9c\n\nChange-Id: I5787d9ac5e745a08e1c891e9ce9efc4e7f97ace8\n"
    },
    {
      "commit": "cb5529efd80bc9ae78a8ea5f16f062adda4ec368",
      "tree": "bd8406edf2d073901b7b44123ea49bdd93a99056",
      "parents": [
        "c99376836021e6623516cf38d42259d38e1a480f",
        "784515ad93c63ce9b7add4830946f30a2792b97d"
      ],
      "author": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Jul 06 12:59:46 2011 -0700"
      },
      "committer": {
        "name": "Jean-Baptiste Queru",
        "email": "jbq@google.com",
        "time": "Wed Jul 06 12:59:55 2011 -0700"
      },
      "message": "Merge 784515ad\n\nChange-Id: I3e5b691d008e9548f43339635bafdd95bc2f56fe\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": "b3773e9cc84630fced2117bb57224f0e766c5a26",
      "tree": "d95591c508bdb12628374e1204cc7ee70cb2a4f3",
      "parents": [
        "784515ad93c63ce9b7add4830946f30a2792b97d",
        "9c95cbf75094c15d251bb3d57a55ce47d7c6c2c8"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 06 10:27:49 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 06 10:27:49 2011 -0700"
      },
      "message": "am 9c95cbf7: Merge \"Really fix the build.\"\n\n* commit \u00279c95cbf75094c15d251bb3d57a55ce47d7c6c2c8\u0027:\n  Really fix the build.\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": "784515ad93c63ce9b7add4830946f30a2792b97d",
      "tree": "03f1f97f1c472ab59aa4dbcb3e8c4586e68d721c",
      "parents": [
        "d25ea49e632c00d57d893563dac3f6dae5493b7e",
        "01eb7f72434830bb14cec906d885d2b7ee40d53b"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 06 09:08:47 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 06 09:08:47 2011 -0700"
      },
      "message": "am 01eb7f72: Merge \"Fix broken build\"\n\n* commit \u002701eb7f72434830bb14cec906d885d2b7ee40d53b\u0027:\n  Fix broken build\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": "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": "877923d369c953d601afd461a04854a27ec720fd",
      "tree": "369350c5eb46452d6c693d8d6aa4286012dccd51",
      "parents": [
        "d625b56d6b0dba3444723b9f9198f7759d3dcd82",
        "d25ea49e632c00d57d893563dac3f6dae5493b7e"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 06 07:53:10 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 06 07:53:10 2011 -0700"
      },
      "message": "am d25ea49e: am b73b6783: Merge \"libc: Add logcat error message for memory corruption\"\n\n* commit \u0027d25ea49e632c00d57d893563dac3f6dae5493b7e\u0027:\n  libc: Add logcat error message for memory corruption\n"
    },
    {
      "commit": "d25ea49e632c00d57d893563dac3f6dae5493b7e",
      "tree": "80d71801e912953212601c17968f0f82e73a3ac4",
      "parents": [
        "946f3ad199e4c20606f4461751f510220b22e7b8",
        "b73b6783a595cf4b1cef6463c23317a8b417f1e9"
      ],
      "author": {
        "name": "David \u0027Digit\u0027 Turner",
        "email": "digit@android.com",
        "time": "Wed Jul 06 07:46:40 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Jul 06 07:46:40 2011 -0700"
      },
      "message": "am b73b6783: Merge \"libc: Add logcat error message for memory corruption\"\n\n* commit \u0027b73b6783a595cf4b1cef6463c23317a8b417f1e9\u0027:\n  libc: Add logcat error message for memory corruption\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": "1f8e2672a8f261d5bb08e3ab26f026b30f5ff77b",
      "tree": "45e6b8bf1abfb8ccacce27582c8563dd25f5101e",
      "parents": [
        "fe88a194a308ae3753f90c9f7ecb99557fdbfcca"
      ],
      "author": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 27 00:52:21 2011 -0700"
      },
      "committer": {
        "name": "Brian Carlstrom",
        "email": "bdc@google.com",
        "time": "Fri May 27 00:52:21 2011 -0700"
      },
      "message": "Implement getpwnam_r(3) and getpwuid_r(3).\n\nThese functions were already declared in \u003cpwd.h\u003e, but hadn\u0027t been implemented\nyet.\n\ngit cherry-pick --no-commit 081504af74826bad7035669ad34d457b4b439e8f\n\nChange-Id: I316acf4cffb9f2c6788e8e342aa620f9a00886d5\n"
    },
    {
      "commit": "54e494d909fff343ed0c612506fe68294a3936d0",
      "tree": "1aacb9e661f65323e8aba1186f924f80932a197f",
      "parents": [
        "18a0a39a1bfb050351b486d5a980b16578cf967d",
        "add0a45a117f00553e79e7137d023416f9c0a54f"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Wed May 11 13:11:56 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed May 11 13:11:56 2011 -0700"
      },
      "message": "am add0a45a: am e8f7e30b: Merge \"bionic, libthread_db x86 fixes\"\n\n* commit \u0027add0a45a117f00553e79e7137d023416f9c0a54f\u0027:\n  bionic, libthread_db x86 fixes\n"
    },
    {
      "commit": "add0a45a117f00553e79e7137d023416f9c0a54f",
      "tree": "bf41720295f493b73b58cdb4793498d32703b8a7",
      "parents": [
        "86d25a54bc093aae369ce54af11151d60ef191fc",
        "e8f7e30b05c6ba103d64c1fb3cd5ef2b17be7aab"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Tue May 10 17:19:13 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Tue May 10 17:19:13 2011 -0700"
      },
      "message": "am e8f7e30b: Merge \"bionic, libthread_db x86 fixes\"\n\n* commit \u0027e8f7e30b05c6ba103d64c1fb3cd5ef2b17be7aab\u0027:\n  bionic, libthread_db x86 fixes\n"
    },
    {
      "commit": "8e551a6319e45dd5c8d03864f3330b45cf8551b7",
      "tree": "70eb80f79b0b24a96f4fd4fd8ed68ce3b63ff154",
      "parents": [
        "3ef36b2115d0802e668e325b59af6ef14d999e71"
      ],
      "author": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Mon Mar 28 09:47:35 2011 -0700"
      },
      "committer": {
        "name": "Bruce Beare",
        "email": "bruce.j.beare@intel.com",
        "time": "Wed Apr 27 09:12:58 2011 -0700"
      },
      "message": "bionic, libthread_db x86 fixes\n\nChange-Id: I3be997f5f1f6a894a3c200d4f325cf3bfd428c66\nAuthor: James Rose \u003cjames.rose@intel.com\u003e\nSigned-off-by: Bruce Beare \u003cbruce.j.beare@intel.com\u003e\n"
    },
    {
      "commit": "3be409a38c18c75690b74bca5d81ca95c8f0f5b9",
      "tree": "0a6dddd0c13a1189481455f47ca7fa0e7a12d17e",
      "parents": [
        "f11b3bcbf952a13aaca4e24d530b51ade8493d76",
        "702457363c2b1b01f0d9cb0093a48ce28753e275"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon Apr 11 14:50:33 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 11 14:50:33 2011 -0700"
      },
      "message": "am 70245736: am aad685ce: am 4c090434: Merge \"removing shadowing redeclaration of result\"\n\n* commit \u0027702457363c2b1b01f0d9cb0093a48ce28753e275\u0027:\n  removing shadowing redeclaration of result\n"
    },
    {
      "commit": "702457363c2b1b01f0d9cb0093a48ce28753e275",
      "tree": "f839317d742e799538763bdb1852bdf3a6313ee5",
      "parents": [
        "2b434862fdc595f1488f2ab3b13ed40f2aed6edb",
        "aad685ce001495260a3ce0c9d9284a6ee3ca09c0"
      ],
      "author": {
        "name": "David Turner",
        "email": "digit@android.com",
        "time": "Mon Apr 11 14:46:48 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Mon Apr 11 14:46:48 2011 -0700"
      },
      "message": "am aad685ce: am 4c090434: Merge \"removing shadowing redeclaration of result\"\n\n* commit \u0027aad685ce001495260a3ce0c9d9284a6ee3ca09c0\u0027:\n  removing shadowing redeclaration of result\n"
    },
    {
      "commit": "5f133f3c4ddd6d43d8da6b3bcccb9a7477dd20b3",
      "tree": "95c26717aa882e5cd0f4fb7b46b5fc7d0a842728",
      "parents": [
        "e1d5bef7a648d922a9e5d5a637387eb1551e1d1b",
        "31e2feeef3dffb49ce742a6ae1c9280c792c7c49"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Apr 01 12:27:07 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 01 12:27:07 2011 -0700"
      },
      "message": "am 31e2feee: am 2dc801f9: am 8da75ab8: Ignore property set timeouts.\n\n* commit \u002731e2feeef3dffb49ce742a6ae1c9280c792c7c49\u0027:\n  Ignore property set timeouts.\n"
    },
    {
      "commit": "2dc801f9fce57c35c00a3366f86bc38fe3e38c25",
      "tree": "6d92e201afc947632ab31b6731c0d15d22c2796f",
      "parents": [
        "099423ba1c68d960888905ce5de093ea8cb7ad39",
        "8da75ab8936b0b7fcf8dd9a3befeb696ee6aa39d"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Apr 01 12:24:15 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Fri Apr 01 12:24:15 2011 -0700"
      },
      "message": "am 8da75ab8: Ignore property set timeouts.\n\n* commit \u00278da75ab8936b0b7fcf8dd9a3befeb696ee6aa39d\u0027:\n  Ignore property set timeouts.\n"
    },
    {
      "commit": "8da75ab8936b0b7fcf8dd9a3befeb696ee6aa39d",
      "tree": "76423701d05ee17a93ba91da93a113f1f36082c7",
      "parents": [
        "23bc3ff71dffdfec208aee05938e544c7cb3bc37"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Apr 01 10:53:12 2011 -0700"
      },
      "committer": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Fri Apr 01 10:53:12 2011 -0700"
      },
      "message": "Ignore property set timeouts.\n\nChange-Id: Ic3f6119398368ba047736370336d0260905abd40\n"
    },
    {
      "commit": "099423ba1c68d960888905ce5de093ea8cb7ad39",
      "tree": "39691bf870cd2198d7e8bb47e9a259c7c4bbaf9a",
      "parents": [
        "6d46b09954847b8905507c22e84c39b33425c5bd",
        "23bc3ff71dffdfec208aee05938e544c7cb3bc37"
      ],
      "author": {
        "name": "Brad Fitzpatrick",
        "email": "bradfitz@android.com",
        "time": "Wed Mar 30 15:48:11 2011 -0700"
      },
      "committer": {
        "name": "Android Git Automerger",
        "email": "android-git-automerger@android.com",
        "time": "Wed Mar 30 15:48:11 2011 -0700"
      },
      "message": "am 23bc3ff7: Don\\\u0027t futex_wait spin when setting properties. Wait for socket close.\n\n* commit \u002723bc3ff71dffdfec208aee05938e544c7cb3bc37\u0027:\n  Don\u0027t futex_wait spin when setting properties. Wait for socket close.\n"
    }
  ],
  "next": "23bc3ff71dffdfec208aee05938e544c7cb3bc37"
}
