)]}'
{
  "log": [
    {
      "commit": "33391dad155cb46053aeecdd3b2070cef717f07d",
      "tree": "b72bcdb75f564e4aaa2b906f0f9311d120ace70a",
      "parents": [
        "c10e14110a83efc8ca827cf5eef8b1e3b1a254c7"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jul 01 07:41:18 2017 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Sat Jul 01 07:41:48 2017 -0700"
      },
      "message": "Remove unnecessary SELinux dependencies\n\nThese are unused.\n\nTest: code compiles.\nChange-Id: Idd707dfcc8f6daac3a489c791ecc364841cf31f9\n"
    },
    {
      "commit": "0915f23d5f841a54c511157e16dc514080248f7b",
      "tree": "bffd2ead8ce80a136a203fd68313a6f808f09ff5",
      "parents": [
        "9cb2e2eb8cefcfca5133d01f29ab29005e1f2a46"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jun 27 14:08:05 2017 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jun 27 15:06:57 2017 -0700"
      },
      "message": "debuggerd: diagnostics for dumps that are guaranteed to fail.\n\nPrint diagnostics when the user requests a dump that is guaranteed to\nfail, such as trying to dump a process you can\u0027t send a signal to.\n\nBug: http://b/63008395\nChange-Id: I5c6bf2a5751f858e0534990b8d2ab6932eb9f11d\nTest: manually tested\n"
    },
    {
      "commit": "a73df601b7fe192001f4b9b5ddeb17b8efe3981b",
      "tree": "268e9df211bc6e81391f8e121e9ccde25c70b26c",
      "parents": [
        "844940d751be6cf6078c9e816fc09356034c1b26"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 24 15:07:25 2017 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 31 10:35:32 2017 +0100"
      },
      "message": "tombstoned: allow intercepts for java traces.\n\nAll intercept requests and crash dump requests must now specify a\ndump_type, which can be one of kDebuggerdNativeBacktrace,\nkDebuggerdTombstone or kDebuggerdJavaBacktrace. Each process can have\nonly one outstanding intercept registered at a time.\n\nThere\u0027s only one non-trivial change in this changeset; and that is\nto crash_dump. We now pass the type of dump via a command line\nargument instead of inferring it from the (resent) signal, this allows\nus to connect to tombstoned before we wait for the signal as the\nprotocol requires.\n\nTest: debuggerd_test\n\nChange-Id: I189b215acfecd08ac52ab29117e3465da00e3a37\n"
    },
    {
      "commit": "2d377cd6888775fe682e49a1ac34a3a6feb78708",
      "tree": "8821a7f29085d838f37d29e8cea22ae0c2998dfe",
      "parents": [
        "62db5fcee052980759ecb977cab4c63491e01e56"
      ],
      "author": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Wed May 10 10:58:59 2017 +0100"
      },
      "committer": {
        "name": "Narayan Kamath",
        "email": "narayan@google.com",
        "time": "Mon May 22 16:55:21 2017 +0100"
      },
      "message": "tombstoned: Add a shared library version of libtombstoned_client...\n\n.. for ART and the frameworks to link against. In the new stack dumping\nscheme (see related bug), the Java runtime will communicate with\ntombstoned in order to obtain a FD to which it can write its traces.\n\nAlso move things around to separate headers that are private\nimplementation details from headers that constitute the public debuggerd\nAPI. There are currently only three such headers :\n\n- tombstoned/tombstoned.h\n- debuggerd/client.h\n- debuggerd/handler.h\n\nBug: 32064548\nTest: make\n\nChange-Id: If1b8578550e373d84828b180bbe585f1088d1aa3\n"
    },
    {
      "commit": "12b71294064e6dc0a225e19ce179e702f481d6a6",
      "tree": "a07e323818f5a5cda55eca1fdc34b2616aa53a58",
      "parents": [
        "22cc398d76b8e0e305b74dbaf1f9fc4eded7791f"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 02 19:01:20 2017 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Mar 02 19:01:20 2017 -0800"
      },
      "message": "Small debuggerd improvements.\n\nInclude the ABI in seccomp causes.\n\nSlightly improved command-line usage information.\n\nFix crasher for seccomp failures.\n\nBug: N/A\nTest: crasher\nChange-Id: Ie419ecfe72ee4f5ccf49c927be18350a58a66a90\n"
    },
    {
      "commit": "1e4afb52c58c3d960160bfe1f7442618aeeec1ce",
      "tree": "fbaec2296b51ab895100a645e18c008bf4580082",
      "parents": [
        "b53f903cf1172b62cbaff17c34405b27172acb76"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jan 30 17:05:40 2017 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jan 30 17:58:04 2017 -0800"
      },
      "message": "debuggerd: fix `debuggerd \u003cpid\u003e`\n\nBug: none\nTest: `debuggerd mediaserver`\nChange-Id: Ibd7bbddb92a99ce49622c0ecc9329a3723f2085d\n"
    },
    {
      "commit": "cbe70cb0a8cb0171f3802273050e851a47b090ed",
      "tree": "87a2805f11d9fa5283fe169d9b155f5b08a94f85",
      "parents": [
        "4c5c9db17b55bfcb2d62eec158440d0e794e30bb"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Oct 18 18:17:52 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 17 13:57:57 2017 -0800"
      },
      "message": "debuggerd: advance our amazing bet.\n\nRemove debuggerd in favor of a helper process that gets execed by\ncrashing processes.\n\nBug: http://b/30705528\nTest: debuggerd_test\nChange-Id: I9906c69473989cbf7fe5ea6cccf9a9c563d75906\n"
    },
    {
      "commit": "30f991f251940be3ed11566fb71139852286f68a",
      "tree": "5cef5c112aa400da1ad1572d26fcc3b6b3099b6e",
      "parents": [
        "cdd7ec12be3dfb6a7fa2f597d2220445c96725cf"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jan 10 13:19:54 2017 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jan 11 09:31:15 2017 -0800"
      },
      "message": "liblog: use log/log.h when utilizing ALOG macros\n\nTest: compile\nBug: 30465923\nChange-Id: Id6d76510819ebd88c3f5003d00d73a0dbe85e943\n"
    },
    {
      "commit": "3ff028c7db24dfc2f83dc11b46149c6cf2d56af6",
      "tree": "e744d03fbab2eb977ab7b705597c14c8c436b19d",
      "parents": [
        "695e6182d346cb8bea4cc0280f4420116e1ba58c",
        "b675f7cd328ee47097f87f9efb5fd37d64d361de"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Wed Nov 30 09:18:57 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Nov 30 09:18:57 2016 +0000"
      },
      "message": "Merge \"debuggerd: Dump list of open files on process crash.\"\nam: b675f7cd32\n\nChange-Id: Iec231fc7eb57fa2c51aabc0fb75b4a09c47004cd\n"
    },
    {
      "commit": "53fb32f05cc17848f239dec6b8c821b7c5124ef4",
      "tree": "7b982e41f907096c0696987837c2c588d8dc027a",
      "parents": [
        "e133feb6b4c25ea3f28ca34a9cde2d8c1361b7b0"
      ],
      "author": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Fri Oct 28 16:37:33 2016 +0100"
      },
      "committer": {
        "name": "Richard Uhler",
        "email": "ruhler@google.com",
        "time": "Mon Nov 21 11:40:42 2016 +0000"
      },
      "message": "debuggerd: Dump list of open files on process crash.\n\nTest: Open a bunch of files, wait for the process to crash, verify dubuggerd\nincludes the list of open files the tombstone it generates.\nTest: Added OpenFilesListTest to debuggerd_test.\n\nBug: 32013594\n\nChange-Id: I6f939ae1d04dc58dc99abff0ed930da9e0ef0d1c\n"
    },
    {
      "commit": "8a7297a09f3a0d98a4a058767f6a447ef0e9d77d",
      "tree": "04081c2735ce7f9f54f5c6d23a89abe9d04e3de7",
      "parents": [
        "de3e60043ceb9c814bd7a3dabc5fd734a63835cf",
        "27d2d49f4872c26831d3e016765c62def3d2fb01"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 20 18:03:57 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu Oct 20 18:03:57 2016 +0000"
      },
      "message": "Merge \"system/core: preparation to pull back interfaces from android/log.h\"\nam: 27d2d49f48\n\nChange-Id: I604bb1d4cf62636663fa92e3d14a55887dbcae23\n"
    },
    {
      "commit": "cfd5b080af8de527d768f0ff7902c26af8d49307",
      "tree": "32295b3aeb6ba8a116592576939348d09814b0be",
      "parents": [
        "1edd61ce5d2f34ff34d015643b5915b3b1c186e8"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Oct 17 14:28:00 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Oct 20 08:11:39 2016 -0700"
      },
      "message": "system/core: preparation to pull back interfaces from android/log.h\n\nPoint to log/log.h where necessary, define LOG_TAG where necessary.\nAccept that private/android_logger.h is suitable replacement for\nlog/logger.h and android/log.h.\n\nCorrect liblog/README\n\nEffectively a cleanup and controlled select revert of\n\u0027system/core: drop or replace log/logger.h\u0027 and\n\u0027system/core: Replace log/log.h with android/log.h\u0027.\n\nTest: compile\nBug: 30465923\nChange-Id: Ic2ad157bad6f5efe2c6af293a73bb753300b17a2\n"
    },
    {
      "commit": "e758b2b3d3d98d9f867b5651c564458c2cb0a666",
      "tree": "f9dd2f20f445db87307855cbf053e148b14d31a5",
      "parents": [
        "2815ac55844eec6853f26e36991d98c04821ba29",
        "d3896c106d6a6e4d461be658a9e66efbde31f28d"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 10 16:20:04 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Oct 10 16:20:04 2016 -0700"
      },
      "message": "Merge commit \u0027d3896c106d6a6e4d461be658a9e66efbde31f28d\u0027 into nyc-dev-plus-aosp\n\nChange-Id: I77d77be5ba21c55cdf1172d7a7f7b4ba04dcbc81\n"
    },
    {
      "commit": "218f7fb68e219884f6eec9714afb4da691450bc5",
      "tree": "d827db4962558790212b5aeb74e72e8b384ebd38",
      "parents": [
        "4a8b178c97ccc388a9c94663dfd7e1c614ffba64"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 07 16:42:05 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Oct 07 18:04:05 2016 -0700"
      },
      "message": "debuggerd: report crashes even when out of file descriptors.\n\nUse nasty clone hacks to let us close random file descriptors to be\nable to connect to debuggerd when the fd table is full.\n\nBug: http://b/32013594\nTest: crasher exhaustfd-SIGSEGV\nChange-Id: I47772e9a5994da4473bd935b105d9c36827c017a\n"
    },
    {
      "commit": "6e5ffe26807419987f2a6f536e5d1db2318fcb03",
      "tree": "372dc66acc6385b409c7ee24fe3a27c0b4e7cbc7",
      "parents": [
        "2acb41b46c0a669a0cd329cf8de7f38d7195def2",
        "cb670780be80e52168f5e992f8b8ddf1bdde1789"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 04 18:33:44 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Oct 04 18:33:44 2016 +0000"
      },
      "message": "Merge \"system/core: drop or replace log/logger.h\" am: 1f90485804\nam: cb670780be\n\nChange-Id: I532a0f6143511f53f3303751f95de115ac034cd7\n"
    },
    {
      "commit": "37c9451349425652eb90434f61b8fe9a064957ba",
      "tree": "aa007e9a35c58fd76f0371d00238f763e60e397a",
      "parents": [
        "093951a2307f6572f911883c1ae6d01996e872c2"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 04 08:54:28 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Oct 04 09:09:10 2016 -0700"
      },
      "message": "system/core: drop or replace log/logger.h\n\ndebuggerd does not require log/logger.h, can use android/log.h\nIn some cases, mark why log/logger.h was required.\n\nTest: Compile and boot smoke test\nBug: 26552300\nBug: 31289077\nBug: 31456426\nChange-Id: Ia34987e25a01d81971ec8d785415f732b8376c4f\n"
    },
    {
      "commit": "c3501a4dff08c024c7c3fd35b6726ab6db873696",
      "tree": "4851eca6e1d45bfd37afb3c8220694a026e446b4",
      "parents": [
        "a205ed0aadf20137a5fd90f0c02a0cdf0924f6c4",
        "014d9df418c9d6f0157c8f7620e8deb924e9b259"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Sep 16 21:13:17 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Sep 16 21:13:17 2016 +0000"
      },
      "message": "Merge \"Fix debuggerd argument parsing.\" am: 99ed65234c\nam: 014d9df418\n\nChange-Id: I2565eb9a4b631e51bfe6bd57d328c8cdd2c3eff6\n"
    },
    {
      "commit": "9048608db1615848307531cced4f7be0ff3c226f",
      "tree": "ff165d6f73ce07a264e37fef4e8728f191d603c8",
      "parents": [
        "67855d8454644ba84931b17013c040154a86fbc5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 15 17:08:33 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 15 17:08:33 2016 -0700"
      },
      "message": "Fix debuggerd argument parsing.\n\nWe weren\u0027t detecting incorrect input before. Also clean up the help output\nto match the style of all the toybox output. Also flush stdout so that we\ndon\u0027t report failure before even saying that we\u0027re going to try to contact\ndebuggerd...\n\nChange-Id: I9e4bfa878f270fe46c3c210c7a7138959a108d67\n"
    },
    {
      "commit": "66e5e2432a88a4b2ba8bacbc3137438e95eb4011",
      "tree": "4c48120999e51c26adff6d7936e3ee4b6fab207a",
      "parents": [
        "c8146aa39f6845b95f8a098015f5b195098ac921",
        "8615d79d85e53c86028b702152bc00864b18f9d5"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 23:05:59 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 23 23:05:59 2016 +0000"
      },
      "message": "Merge \"Most accept/accept4 calls in system/core don\u0027t actually want the remote address.\" am: 299d64144b\nam: 8615d79d85\n\nChange-Id: I89aeabf6efa8217c9acd3f8a766bbd18f7e994fa\n"
    },
    {
      "commit": "8615d79d85e53c86028b702152bc00864b18f9d5",
      "tree": "65afa58c78ea612d8824729717ce18654b4a10ff",
      "parents": [
        "504d4ccd7cc27806781af880cb2479075c11ad30",
        "299d64144bdf28b06489c64aa4e99c423b84c1c4"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 23:03:20 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 23 23:03:20 2016 +0000"
      },
      "message": "Merge \"Most accept/accept4 calls in system/core don\u0027t actually want the remote address.\"\nam: 299d64144b\n\nChange-Id: I3fb9678dfed08f0b1d6e90e547ecae6cdcabc9a1\n"
    },
    {
      "commit": "50a99aa6cba2ac7f07b6e4d7dd652dc0ef88384c",
      "tree": "8bb3ad8dbd9bd6380dd34def0867f1036cd34838",
      "parents": [
        "852a4c761d49668d80128cb61423e0a1448c341c",
        "0d2ef3dc866d625725a69b903144f5d20ef44d49"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 20:10:01 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 23 20:10:01 2016 +0000"
      },
      "message": "Merge \"debuggerd: set SOCK_NONBLOCK in accept rather than later.\" am: 82b67fff06\nam: 0d2ef3dc86\n\nChange-Id: Ie8ae5707455f4d1741ca87ef515ea9a142e05aa5\n"
    },
    {
      "commit": "0d2ef3dc866d625725a69b903144f5d20ef44d49",
      "tree": "5b98718b7e8d075568f95457fd90c2913c6646bf",
      "parents": [
        "559cc01e3e2c6c5ed1cb2a0ca003ff48b5d0f41d",
        "82b67fff06363c8e7a17058cb5ce748f21a27f11"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 20:05:48 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Aug 23 20:05:48 2016 +0000"
      },
      "message": "Merge \"debuggerd: set SOCK_NONBLOCK in accept rather than later.\"\nam: 82b67fff06\n\nChange-Id: I6f2e72a4847fbfac8e1ba78321be7e026f7629bd\n"
    },
    {
      "commit": "3dcfa3fb1cec36b21ad026c618c85790a2353f72",
      "tree": "b5f5daae853a2c420873b40f92d4f18175d96abd",
      "parents": [
        "82b67fff06363c8e7a17058cb5ce748f21a27f11"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 12:50:00 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Aug 23 12:50:00 2016 -0700"
      },
      "message": "Most accept/accept4 calls in system/core don\u0027t actually want the remote address.\n\nSo don\u0027t write the extra code for it or waste the kernel\u0027s time\ncopying it around.\n\nChange-Id: I93de64064c2d4fe58ba5b5322cfa69bf31a76dad\n"
    },
    {
      "commit": "874c674c60bf58a65e0d6e65c5f6d20fff0db3cf",
      "tree": "0073de2439c0f0c7fbb8bc56bb1ff5c1c479b4ad",
      "parents": [
        "e5b7ad1c3969da554da5fe479cb874436b75ac5c"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 22 14:17:25 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Aug 22 14:17:25 2016 -0700"
      },
      "message": "debuggerd: set SOCK_NONBLOCK in accept rather than later.\n\nChange-Id: I95586984dd7aec798d75b150be238d5f6f7c91da\n"
    },
    {
      "commit": "27259667ec1c65aa575222b09451002ecd517eb7",
      "tree": "6fc8d915208d91d56131bdc7cdc003f09b7482ba",
      "parents": [
        "f648fb4539795e94916beb408e5a4a897cefaac7",
        "60083bed7502d49f7e4723045b0efb16ba85db69"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Sat Aug 13 00:41:56 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Aug 13 00:41:56 2016 +0000"
      },
      "message": "Merge \"debuggerd: remove unnecessary arguments.\" am: 7a746f3a68\nam: 60083bed75\n\nChange-Id: I6f575a9662319db0dffeb121e0400eaa8f8cee55\n"
    },
    {
      "commit": "60083bed7502d49f7e4723045b0efb16ba85db69",
      "tree": "7a58f7e76a8dc3ee4649a7af138cbdea10f1e283",
      "parents": [
        "81a3f71e45af5f19d426c7d0cc116ba3921d968a",
        "7a746f3a6850198b7f1cad7f22befe9ca48b47fd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Sat Aug 13 00:38:54 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Aug 13 00:38:54 2016 +0000"
      },
      "message": "Merge \"debuggerd: remove unnecessary arguments.\"\nam: 7a746f3a68\n\nChange-Id: I0a01639dd3096372eb5bbbe28362cdbf1c1da4af\n"
    },
    {
      "commit": "4a984ced345d3b7685d14bac5de5bb154f838b89",
      "tree": "e55bac2d4709bfea33e87c4793430697d2063b53",
      "parents": [
        "3ab37d88445442c1231a6431be90435c1b1fcc61",
        "4c4a172ee911bb9e76414267168b816399f38755"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 12 20:17:41 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 12 20:17:41 2016 +0000"
      },
      "message": "Merge \"debuggerd: remove useless timeout from wait_for_signal.\" am: 5f2bc28ebf\nam: 4c4a172ee9\n\nChange-Id: Ibbf4ff52d9349e8ceee5a6550c997328b204f332\n"
    },
    {
      "commit": "4c4a172ee911bb9e76414267168b816399f38755",
      "tree": "d9012d45d11cdaa7855885ef9c6dd81ebd1b4293",
      "parents": [
        "0c8a67bbfdc8953aebd8af3b140d1ff640dcece0",
        "5f2bc28ebf6b6869e16e00d45da835fc63e4dfc5"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 12 20:02:10 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Fri Aug 12 20:02:10 2016 +0000"
      },
      "message": "Merge \"debuggerd: remove useless timeout from wait_for_signal.\"\nam: 5f2bc28ebf\n\nChange-Id: Iee4f22c04ad330c91f86ca03583f8e36b2816039\n"
    },
    {
      "commit": "a04c80255c29a57f63f123f10e15f3887a896cac",
      "tree": "2ff56bf3811062862670b6e4c516f16018fac388",
      "parents": [
        "f5a960a187ba8959596f6a324c2b5a05c1be9b35"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Aug 11 12:50:32 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 12 11:00:18 2016 -0700"
      },
      "message": "debuggerd: remove unnecessary arguments.\n\nThese were previously required when bionic used tgkill to reraise\nsignals, but now that we use rt_tgsigqueueinfo to reraise signals, they\nare no longer necessary.\n\nChange-Id: I46ba9f14039a727d0a2c4c3a9d93a3532ba8f263\n"
    },
    {
      "commit": "f5a960a187ba8959596f6a324c2b5a05c1be9b35",
      "tree": "b59c9dfb95af0ca43730b14f29b872f6c3c8340e",
      "parents": [
        "07f14c9cdde718bface371d075ccc7f8bf16f098"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Aug 10 17:57:01 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Aug 12 11:00:18 2016 -0700"
      },
      "message": "debuggerd: remove useless timeout from wait_for_signal.\n\nThe watchdog already handles things for us, so the timeout logic in\nwait_for_signal is pointless.\n\nChange-Id: Id81ad5f294068216b73e04c4e2ceca072ae1bbc0\n"
    },
    {
      "commit": "2b50c4a37da2ecf1a78c4ef1696622cb94c1420b",
      "tree": "e71934e35355b5d8fb65cf5adff4153ac454f4a3",
      "parents": [
        "30fc292a2612689df47c797690db50428915072a",
        "d3d04f4d72d5db46d2943dcba1e99c7473dd83ff"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jul 19 20:34:43 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Tue Jul 19 20:34:43 2016 +0000"
      },
      "message": "Merge \\\"debuggerd: verify that traced threads belong to the right process.\\\" into nyc-dev\nam: d3d04f4d72\n\nChange-Id: I65cd7507a24b7148dd67d748dede8e664dd70328\n"
    },
    {
      "commit": "4a875ce6ff678d01648e89f1186debd5a1db6377",
      "tree": "bfca8adb748c7396243bc1914c06758d23082c5f",
      "parents": [
        "34ae543dc3b9c577c39eb9d7063e2f72747f5d26"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jun 30 14:20:18 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jul 13 16:49:02 2016 -0700"
      },
      "message": "debuggerd: verify that traced threads belong to the right process.\n\nFix two races in debuggerd\u0027s PTRACE_ATTACH logic:\n  1. The target thread in a crash dump request could exit between the\n     /proc/\u003cpid\u003e/task/\u003ctid\u003e check and the PTRACE_ATTACH.\n  2. Sibling threads could exit between listing /proc/\u003cpid\u003e/task and the\n     PTRACE_ATTACH.\n\nBug: http://b/29555636\nChange-Id: I4dfe1ea30e2c211d2389321bd66e3684dd757591\n"
    },
    {
      "commit": "88347e1430191ab7dd4f82afe13ef58a63c5c421",
      "tree": "75bdece02aafdaafaa8db8d69a1b70518129a755",
      "parents": [
        "34c6ca01ff7f4750c5865923e2d4d0a2fd33a15a",
        "abf88685e3aba6725ceef9273605548555b5e05f"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Jun 20 20:47:18 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Mon Jun 20 20:47:18 2016 +0000"
      },
      "message": "Merge changes from topic \\\u0027debuggerd_client\\\u0027\nam: abf88685e3\n\nChange-Id: I2a61e4e8b5ec5a4ab6566ab4f8eb31653255fbc5\n"
    },
    {
      "commit": "9c02dc5916c1cee43e4a0840d0d5099878e3793c",
      "tree": "405ed24030a9db302c1d8e0b770c748a54974c9c",
      "parents": [
        "2d690a920f1b2f67e267160083aab711b35ab3fc"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jun 15 17:29:00 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jun 17 13:11:29 2016 -0700"
      },
      "message": "debuggerd: add libdebuggerd_client.\n\nBug: http://b/24414818\nChange-Id: I079c534d2c952b6975bf0428eb86cc7a55525737\n"
    },
    {
      "commit": "8b474de4acd97f22dd0f8a63654749c372263b25",
      "tree": "2c9cd6eae3201d394de36729227f913509047c92",
      "parents": [
        "830561bb2b34ca8c09be4860380e9032202c3112"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 05 11:13:50 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 05 15:47:16 2016 -0700"
      },
      "message": "Set groups before dropping privileges.\n\nThe code for dumping tombstones tries to read the log data. This was\nsilently failing after the change to drop root privileges. Fix this\nby explicitly setting the groups allowed before dropping privileges.\n\nBug: 28590884\n(cherry picked from commit edc23801091f1a909efe130e0dba8abab3329eb5)\n\nChange-Id: I225365edccb11f8752027566fd42f3b10ce10260\n"
    },
    {
      "commit": "f89a23f27bdade1e1e3b55a76ffe70355774c610",
      "tree": "450700863df78defc827826670cae234ed46c46c",
      "parents": [
        "512af70bc47804cf32b753f818503e58c88b6c81",
        "fd1eee58f985b3d528ca352ff278d7b200390ab2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 05 21:57:30 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 05 21:57:30 2016 +0000"
      },
      "message": "Merge \"Set groups before dropping privileges.\" into nyc-dev\nam: fd1eee58f9\n\n* commit \u0027fd1eee58f985b3d528ca352ff278d7b200390ab2\u0027:\n  Set groups before dropping privileges.\n\nChange-Id: I85c98abb0e7cc3b36ec714899540d65e6ca908c7\n"
    },
    {
      "commit": "edc23801091f1a909efe130e0dba8abab3329eb5",
      "tree": "6833bbd22a037a07166728706617684cf53148e3",
      "parents": [
        "a7431cfa570c6385ecd2041d56ead2603d7b7b80"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 05 11:13:50 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 05 11:13:50 2016 -0700"
      },
      "message": "Set groups before dropping privileges.\n\nThe code for dumping tombstones tries to read the log data. This was\nsilently failing after the change to drop root privileges. Fix this\nby explicitly setting the groups allowed before dropping privileges.\n\nBug: 28590884\nChange-Id: Iaccb1d2928268fc9fc855f6e3814c31ce019badf\n"
    },
    {
      "commit": "e423c24f74aaf0cb5d73a228d92ec4e4a56b0f4f",
      "tree": "17621c9241f8a557aefee89e27a76b10d90d50b8",
      "parents": [
        "6993211d38547d7007a87cbcd006f0f19c598ff9",
        "a7431cfa570c6385ecd2041d56ead2603d7b7b80"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 05 17:55:41 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Thu May 05 17:55:41 2016 +0000"
      },
      "message": "Merge \"Fix problem with wait_for_gdb.\" into nyc-dev\nam: a7431cfa57\n\n* commit \u0027a7431cfa570c6385ecd2041d56ead2603d7b7b80\u0027:\n  Fix problem with wait_for_gdb.\n\nChange-Id: I6d995c423f4ad9134965a215b1eea4cc7fd338b9\n"
    },
    {
      "commit": "99235e9967db4c3889435f67a45e2c79f7f59587",
      "tree": "842ff57efea9af9b07b62a45c021072281e5cf4e",
      "parents": [
        "31701d6074effb399cf717da21abde91d7e29dd7"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 03 16:32:13 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu May 05 10:50:39 2016 -0700"
      },
      "message": "Fix problem with wait_for_gdb.\n\nWhen someone enables wait_for_gdb, activity manager will kill the\nstopped process before a developer can attach to the process. To\nallow debugging in this case, change the code to only contact the\nactivity manager right before continuing the process that is\ncrashing.\n\nAlso, modify the conditions under which to do a gdb attach. The previous\ncode did a partial attach if perform_dump failed. The new version simply\nallows an attach regardless of whether perform_dump passes or fails.\n\nBug: 28409358\n(cherry picked from commit 9818bd2bbee00c387247210eeae2a0a0d3912c8b)\n\nChange-Id: I42f464b69332748e16b07d9d00f44b3aa26ce8b7\n"
    },
    {
      "commit": "9818bd2bbee00c387247210eeae2a0a0d3912c8b",
      "tree": "a8aac80e865924f6d55359c314ce3f0b4452962b",
      "parents": [
        "f2049163a4ce602dffaa41a747ee5675a0d82752"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue May 03 16:32:13 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed May 04 17:42:30 2016 -0700"
      },
      "message": "Fix problem with wait_for_gdb.\n\nWhen someone enables wait_for_gdb, activity manager will kill the\nstopped process before a developer can attach to the process. To\nallow debugging in this case, change the code to only contact the\nactivity manager right before continuing the process that is\ncrashing.\n\nAlso, modify the conditions under which to do a gdb attach. The previous\ncode did a partial attach if perform_dump failed. The new version simply\nallows an attach regardless of whether perform_dump passes or fails.\n\nBug: 28409358\nChange-Id: I4fe8d390c212d47e007cbe6543c2d114c3c7aeff\n"
    },
    {
      "commit": "1ba92f874addd332554ebe7da245dbb1e3e7edd0",
      "tree": "18a1a7e6f930b39936a434a84d6f0de4b1f2d2b6",
      "parents": [
        "c4dcc38e44a28d91922def85b1ff95802cdf50f7",
        "0fc89f34b99f20f0ebc0111df74490f4ebd44076"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 20 21:58:06 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Wed Apr 20 21:58:06 2016 +0000"
      },
      "message": "Connect to activity manager as root.\nam: 0fc89f3\n\n* commit \u00270fc89f34b99f20f0ebc0111df74490f4ebd44076\u0027:\n  Connect to activity manager as root.\n\nChange-Id: I28ad7d209d6d94be790bd4ffd1e5b31da4cd8589\n"
    },
    {
      "commit": "8fb38ae82d919b2df37c9a82d09afca891f1bba4",
      "tree": "2a973348f129e25602d77a03f0f7c7fad8b522c9",
      "parents": [
        "0652728e2aa101d066600e50f0c91555bd03bf92"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 19 15:53:13 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 20 14:38:44 2016 -0700"
      },
      "message": "Connect to activity manager as root.\n\nBefore dropping root privileges, connect to the activity manager.\nAlso, only connect to the activity manager if this is a crash.\n\nBug: 28210681\n(cherry picked from commit 0fc89f34b99f20f0ebc0111df74490f4ebd44076)\n\nChange-Id: Id25b92e550d71ffe1b9eafe43976ef514a83714b\n"
    },
    {
      "commit": "0fc89f34b99f20f0ebc0111df74490f4ebd44076",
      "tree": "237b2b3cec17040b364476b34bc6047dcf41995b",
      "parents": [
        "ded0f36822864506ca950466fb1de37de78ab51b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Apr 19 15:53:13 2016 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Apr 20 11:30:33 2016 -0700"
      },
      "message": "Connect to activity manager as root.\n\nBefore dropping root privileges, connect to the activity manager.\nAlso, only connect to the activity manager if this is a crash.\n\nBug: 28210681\nChange-Id: Ie266031910519fa2aa6835644a95c1fc56e24d8d\n"
    },
    {
      "commit": "dac593937fa8ae346138eae26643734ad85020ad",
      "tree": "55404be97e251df205c076102e1c2b3b47f76a58",
      "parents": [
        "34c081cf3e5a1d622ddd4ae86272ff6c7183231d",
        "dfa163df500ca71b71be315aa55e8859c946d0fb"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Sat Mar 26 01:16:25 2016 +0000"
      },
      "committer": {
        "name": "android-build-merger",
        "email": "android-build-merger@google.com",
        "time": "Sat Mar 26 01:16:25 2016 +0000"
      },
      "message": "debuggerd: add SIGSYS to the list of handled signals.\nam: dfa163d\n\n* commit \u0027dfa163df500ca71b71be315aa55e8859c946d0fb\u0027:\n  debuggerd: add SIGSYS to the list of handled signals.\n"
    },
    {
      "commit": "dfa163df500ca71b71be315aa55e8859c946d0fb",
      "tree": "ca8c6ee3a6e6d7f7cd563c424a7b16f098d90614",
      "parents": [
        "033bc9f3e7175ece714c13258c2385d503c35dc8"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Mar 25 13:22:05 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Mar 25 14:34:22 2016 -0700"
      },
      "message": "debuggerd: add SIGSYS to the list of handled signals.\n\nProcesses using seccomp will get SIGSYS when attempting to use a\ndisallowed syscall. We\u0027re currently not handling SIGSYS in bionic\u0027s\nsignal handler, but this change will let us dump a backtrace pointing at\nrt_tgsigqueueinfo in our signal handler if seccomp policies block it\nduring a real crash.\n\nBug: http://b/27853687\nChange-Id: I4e4aacc95eeef7249d895e19dc4ccd77a51c7a17\n"
    },
    {
      "commit": "6eb4eab106bd5161373adb61bb81e926a8575134",
      "tree": "470a4a582181581e38c7c7d64545affd2c1569b6",
      "parents": [
        "a6219eae8d5efe6c364c44a546f4d09ccccef8bb"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 23 14:02:52 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 23 14:28:01 2016 -0700"
      },
      "message": "debuggerd: waitpid for all children, and log the result.\n\nChange-Id: Ic575e6db76ab153b4b238589a8cd299812d0e046\n(cherry picked from commit 280800552165b4685fbe86fd8e9dc3b9d9b062cb)\n"
    },
    {
      "commit": "a6219eae8d5efe6c364c44a546f4d09ccccef8bb",
      "tree": "1995a87186ec901c0a32b7071df2094d49b429b4",
      "parents": [
        "05e1e1fb4100bb52fab2af41dc6caaf31c527819"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 22 16:37:45 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 23 14:27:57 2016 -0700"
      },
      "message": "debuggerd: always send SIGCONT after detaching.\n\nBug: http://b/27330889\nChange-Id: I104248af1cde03dbdbacc03c87fe7e2dffd6c037\n(cherry picked from commit 24464185eb260b4af577895e1c2d35b734a7f99b)\n"
    },
    {
      "commit": "8aeabe15dd38093029714dabb1713724400cf5f1",
      "tree": "8d899e827ec4e3d3a28612f261e4439a78bfe53b",
      "parents": [
        "6e183586e373eec72f62d29b6c3c21ce744caef5",
        "280800552165b4685fbe86fd8e9dc3b9d9b062cb"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 23 21:10:38 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 23 21:10:38 2016 +0000"
      },
      "message": "Merge \"debuggerd: waitpid for all children, and log the result.\""
    },
    {
      "commit": "6e183586e373eec72f62d29b6c3c21ce744caef5",
      "tree": "f6e822c1ce90ab9b39a6fb76fe5907f9b322b498",
      "parents": [
        "6c03e3111d7ddcfe1b8ffad40b9680a669c674a7",
        "24464185eb260b4af577895e1c2d35b734a7f99b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 23 21:09:21 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Wed Mar 23 21:09:21 2016 +0000"
      },
      "message": "Merge \"debuggerd: always send SIGCONT after detaching.\""
    },
    {
      "commit": "280800552165b4685fbe86fd8e9dc3b9d9b062cb",
      "tree": "6d92529971a0e9d5cad7041e33e7e2f023b4898a",
      "parents": [
        "24464185eb260b4af577895e1c2d35b734a7f99b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 23 14:02:52 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 23 14:07:58 2016 -0700"
      },
      "message": "debuggerd: waitpid for all children, and log the result.\n\nChange-Id: Ic575e6db76ab153b4b238589a8cd299812d0e046\n"
    },
    {
      "commit": "24464185eb260b4af577895e1c2d35b734a7f99b",
      "tree": "69db6e3b90665a54dddedbf29bd0f23c4603a241",
      "parents": [
        "6a7ddbd37dbcf764d50041670fb6065f74c00391"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 22 16:37:45 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 23 14:07:58 2016 -0700"
      },
      "message": "debuggerd: always send SIGCONT after detaching.\n\nBug: http://b/27330889\nChange-Id: I104248af1cde03dbdbacc03c87fe7e2dffd6c037\n"
    },
    {
      "commit": "ae38923c3e8b395ead314194340a685c56d73aee",
      "tree": "c804870ba65a06d1fc97748a92feb883f2930545",
      "parents": [
        "ce8bc7b3fa3a2fda4382b8613dbf699e61071e51"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 22 20:03:13 2016 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Mar 22 20:03:13 2016 -0700"
      },
      "message": "Switch debuggerd over to unique_fd.\n\nChange-Id: I858b9ac6a3ed47b4cc81cfe49f1ceb1e06356a03\n"
    },
    {
      "commit": "e59c76ab620b9b0e45d41cc0ea6e472ce1ab2950",
      "tree": "129e8e62791b5288518125798a3e733e41579a3f",
      "parents": [
        "a775e6269308db9c56a8b53b85e7bfbb739b2221"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 15:14:43 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 15:33:24 2016 -0700"
      },
      "message": "debuggerd: don\u0027t apply timeout when wait_for_gdb is on.\n\nChange-Id: Ic632dde4a0510c212a4b1c01890df9a41e9771c9\n(cherry picked from commit 676a756b7b6e4028633dac85110767a3cf6785a7)\n"
    },
    {
      "commit": "676a756b7b6e4028633dac85110767a3cf6785a7",
      "tree": "871a1483d60544fb621172da036a88d4c38872f6",
      "parents": [
        "1371c0562cb58a8599d2f533fc4afd4eb4f307dd"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 15:14:43 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 15:29:00 2016 -0700"
      },
      "message": "debuggerd: don\u0027t apply timeout when wait_for_gdb is on.\n\nChange-Id: Ic632dde4a0510c212a4b1c01890df9a41e9771c9\n"
    },
    {
      "commit": "965d6f4d177c394c6a7861ce34761e297ee7af2b",
      "tree": "2ff2347d85115134df06681729b5598be318d9c4",
      "parents": [
        "290127b29290c133f759eda3fc992e3dcbfb7cb1"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 13:39:15 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 14:15:01 2016 -0700"
      },
      "message": "debuggerd: don\u0027t send SIGSTOP to crashing processes.\n\nThis was actually nonfunctional until f5e8f0b, because it was using kill\nafter privileges were dropped. This doesn\u0027t seem necessary after the\nchanges to the sibling thread ptrace logic, though.\n\nBug: http://b/27427439\nChange-Id: I6bffbc14e0cf5e377bbfa39c945518e0d436c223\n(cherry picked from commit b17f228ff6cdc73f0ca3ab4578f78faf1a7f1b86)\n"
    },
    {
      "commit": "b17f228ff6cdc73f0ca3ab4578f78faf1a7f1b86",
      "tree": "31c418cb32bb331d777880cf027362ad5b386d57",
      "parents": [
        "b45800afa38a1cfb7c4e1e9adb3440022c82618a"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 13:39:15 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 13:47:48 2016 -0700"
      },
      "message": "debuggerd: don\u0027t send SIGSTOP to crashing processes.\n\nThis was actually nonfunctional until f5e8f0b, because it was using kill\nafter privileges were dropped. This doesn\u0027t seem necessary after the\nchanges to the sibling thread ptrace logic, though.\n\nBug: http://b/27427439\nChange-Id: I6bffbc14e0cf5e377bbfa39c945518e0d436c223\n"
    },
    {
      "commit": "036ff2ce83e07a6a7ad0ca339cb2c8f410fc2667",
      "tree": "bb09fb9e93aaba2f26b5a2db3ec00e27ad6246a4",
      "parents": [
        "e5dbdd09c74b2f62e5a633f76613c6341bc9ab17"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 16 20:19:44 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 13:11:08 2016 -0700"
      },
      "message": "debuggerd: monitor the worker process for failure.\n\nUse sigtimedwait on SIGCHLD to watch our forked worker processes for\nfailure, so that we can guarantee that we always resume/kill the target\nprocess if libunwind crashes.\n\nBug: http://b/27427439\nChange-Id: I5a5da1f1abd7dc9d01223f5b3778e946e2d47d20\n(cherry picked from commit 630bc80e185f0c596a15822b67c62a0ecd6c982c)\n"
    },
    {
      "commit": "e5dbdd09c74b2f62e5a633f76613c6341bc9ab17",
      "tree": "93cd86ffca8ecdb313ad1522c537db2de8caa177",
      "parents": [
        "1a69e2811e940fc6a01c5b57d59f6f5e85b40373"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 16 18:09:15 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 13:11:05 2016 -0700"
      },
      "message": "debuggerd: fork the signal sender once.\n\nBug: http://b/27427439\nChange-Id: I6294ff68a150bc9950a300264c31d2141307ac66\n(cherry picked from commit f5e8f0b9cd9ec0214a6f9cd38dd6d9af3268f9aa)\n"
    },
    {
      "commit": "1a69e2811e940fc6a01c5b57d59f6f5e85b40373",
      "tree": "4cd5cbe3a97cd036dcc0187f382e9f90855e67a9",
      "parents": [
        "aa4175685157c59c1f88e2f7a7ee651e53932b49"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 19 18:13:02 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 13:11:01 2016 -0700"
      },
      "message": "Clean up CLOEXEC in debuggerd.\n\nChange-Id: I1cd75f6a8f98e99f4a4fedfc706103ce34035765\n(cherry picked from commit 17ba68d0cde001c2e73a310ee9a895a5b3bb5d32)\n"
    },
    {
      "commit": "aa4175685157c59c1f88e2f7a7ee651e53932b49",
      "tree": "7f55ce9f3c595af4fdb0139e484947a5bef766a9",
      "parents": [
        "eb43104db148976581c6525b12b1abf25f65987b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 19 10:41:17 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 13:10:58 2016 -0700"
      },
      "message": "Remove dead code from debuggerd.\n\n  system/core/debuggerd/debuggerd.cpp:683:5: warning: Value stored to \u0027logsocket\u0027 is never read\n    logsocket \u003d -1;\n    ^           ~~\n\nBug: http://b/27264392\nChange-Id: I8eab8a02b67f219c32aea49e4d4957e5642df38f\n(cherry picked from commit 6da1353863dea7ed6835bd776a0cf4a49d12f910)\n"
    },
    {
      "commit": "630bc80e185f0c596a15822b67c62a0ecd6c982c",
      "tree": "9cb3bb88ced4f966aa493ad1fae4ffe88026843f",
      "parents": [
        "f5e8f0b9cd9ec0214a6f9cd38dd6d9af3268f9aa"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 16 20:19:44 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 11:43:55 2016 -0700"
      },
      "message": "debuggerd: monitor the worker process for failure.\n\nUse sigtimedwait on SIGCHLD to watch our forked worker processes for\nfailure, so that we can guarantee that we always resume/kill the target\nprocess if libunwind crashes.\n\nBug: http://b/27427439\nChange-Id: I5a5da1f1abd7dc9d01223f5b3778e946e2d47d20\n"
    },
    {
      "commit": "f5e8f0b9cd9ec0214a6f9cd38dd6d9af3268f9aa",
      "tree": "2c155f4acd3cbc3378ed95621048a9457e63f34c",
      "parents": [
        "371e7ea170d749489a0eb7085347f58b7be63734"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 16 18:09:15 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Mar 17 11:27:31 2016 -0700"
      },
      "message": "debuggerd: fork the signal sender once.\n\nBug: http://b/27427439\nChange-Id: I6294ff68a150bc9950a300264c31d2141307ac66\n"
    },
    {
      "commit": "bcb58e6d64caef0506eb1d711ec3adbd7e9fb58e",
      "tree": "deb4a8b0d5bdeeda2d5f36694480b1af99354fc7",
      "parents": [
        "75dda7551f6a3499c0c45ed0f9530353c7616357"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 16 13:39:38 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 16 16:16:41 2016 -0700"
      },
      "message": "debuggerd: kill crashing processes with the signal they died with.\n\nBug: http://b/27675306\nChange-Id: I951c5d7e54c35d88c65c5dc856e0b9d5a93d47b2\n(cherry picked from commit 561497c0a8073d8e04b387be0e0aa995424cee59)\n"
    },
    {
      "commit": "561497c0a8073d8e04b387be0e0aa995424cee59",
      "tree": "bfccb39a5f0371e3dbbb6be762a5bda2b9e3740d",
      "parents": [
        "42aab0a789d6d2d602165e641ddc86a0bc2458c6"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 16 13:39:38 2016 -0700"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 16 16:10:48 2016 -0700"
      },
      "message": "debuggerd: kill crashing processes with the signal they died with.\n\nBug: http://b/27675306\nChange-Id: I951c5d7e54c35d88c65c5dc856e0b9d5a93d47b2\n"
    },
    {
      "commit": "c6348f4e7fc0912919e9668ba52b2040ace8df44",
      "tree": "4301334f1b3e45dc6f29f4c2cd9621a69600ddeb",
      "parents": [
        "dcdf300a1f5b0ad3fb517e53cfe09cc8eab05311"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 08 15:56:33 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 09 16:23:44 2016 -0800"
      },
      "message": "debuggerd: make sure that we kill the process after dumping.\n\nBug: http://b/27367422\nChange-Id: Icd704b1effd558904975cfc524714b51917a653f\n(cherry picked from commit f0c8723bddd00bcaccef59a5a4518cd8d2412d84)\n"
    },
    {
      "commit": "f0c8723bddd00bcaccef59a5a4518cd8d2412d84",
      "tree": "2e1ab89ef6202909c42932ba36c34a6b133c94f8",
      "parents": [
        "feaa3cecb272cc92e7d583f5449499eba341f37b"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Mar 08 15:56:33 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Mar 09 15:59:27 2016 -0800"
      },
      "message": "debuggerd: make sure that we kill the process after dumping.\n\nBug: http://b/27367422\nChange-Id: Icd704b1effd558904975cfc524714b51917a653f\n"
    },
    {
      "commit": "17ba68d0cde001c2e73a310ee9a895a5b3bb5d32",
      "tree": "171b8eb1bea1b18c8529e46593bee9c073ae39ac",
      "parents": [
        "fbaefc4d9d4e7e40ec0262123cd54762b81ed47a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 19 18:13:02 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 19 18:13:02 2016 -0800"
      },
      "message": "Clean up CLOEXEC in debuggerd.\n\nChange-Id: I1cd75f6a8f98e99f4a4fedfc706103ce34035765\n"
    },
    {
      "commit": "6da1353863dea7ed6835bd776a0cf4a49d12f910",
      "tree": "e1b2e971ea6aab3996bad1ece55e25c0a82c2f89",
      "parents": [
        "2773d4f96a8e9f06710e36f7c33459eeaa5cb23a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 19 10:41:17 2016 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 19 10:41:17 2016 -0800"
      },
      "message": "Remove dead code from debuggerd.\n\n  system/core/debuggerd/debuggerd.cpp:683:5: warning: Value stored to \u0027logsocket\u0027 is never read\n    logsocket \u003d -1;\n    ^           ~~\n\nBug: http://b/27264392\nChange-Id: I8eab8a02b67f219c32aea49e4d4957e5642df38f\n"
    },
    {
      "commit": "c362c45949aa91b10f849fbd2248acd434394350",
      "tree": "7b6dded078929a45da565dd731f014583c89b0d4",
      "parents": [
        "7c89f9e955ddd79312113f83cb4c210a68a940aa"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 14 15:51:06 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Fri Jan 15 11:31:17 2016 -0800"
      },
      "message": "debuggerd: fix debug.debuggerd.wait_for_gdb.\n\nBug: http://b/26513486\nChange-Id: I01c28ce810a49f8a4e0e2a86c7d018d95f9617c8\n"
    },
    {
      "commit": "7c89f9e955ddd79312113f83cb4c210a68a940aa",
      "tree": "d9d7660fe4e280ee2fb395ae3300cb2860ac04dc",
      "parents": [
        "047597b3fc345ee657ff1f00ad87521cf4ae455f"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Wed Jan 13 17:57:14 2016 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Thu Jan 14 15:06:37 2016 -0800"
      },
      "message": "debuggerd: fix several bugs caused by fork/setuid change.\n\nPreviously, we weren\u0027t PTRACE_ATTACHing to all of the threads of a\nprocess, and we were also trying to do it after forking and dropping\nprivileges. This patch ensures that all ptrace attaching/detaching\nhappens in one place, before forking/exiting respectively.\n\nBug: http://b/26443860\nBug: http://b/26436605\nBug: http://b/26436486\nChange-Id: Id94e0c1d9d56c051d0dd281d895aaa3285079198\n"
    },
    {
      "commit": "e7a9e52740c952c623f7842ffa1d09b58b45e552",
      "tree": "d2a32bfabb7cd75b848361ae66e3363da921fa06",
      "parents": [
        "8688dba54791cdab323f715a036a952a617945f2"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 17 13:57:03 2015 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Jan 05 15:59:01 2016 -0800"
      },
      "message": "debuggerd: fork and drop privileges when dumping.\n\nBug: http://b/25195825\nChange-Id: I913d8425232e79df3f7a051a8cc63de9c60f4780\n"
    },
    {
      "commit": "7e16cc15b5e16ec35f4c9f0516a6cacf90326856",
      "tree": "ac9676eac446d951c7a0726f9b2ec24c3e96fe1c",
      "parents": [
        "1462c78c9cb1b4ee8d6b68b33fa7be64d6b9fbd4"
      ],
      "author": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Tue Dec 01 17:27:59 2015 +0900"
      },
      "committer": {
        "name": "Erik Kline",
        "email": "ek@google.com",
        "time": "Mon Dec 07 16:07:46 2015 +0900"
      },
      "message": "Switch from using sockaddr to sockaddr_storage.\n\nThis is to ensure sufficient space is always available.\n\nChange-Id: Ifa87b93ecdc90dcacbfb24446c872344da6703d3\n"
    },
    {
      "commit": "8ab7fd4017ca53b643ad228b23a62ec82b04f12f",
      "tree": "31f0542e2da9b6579c7a9dc2752ea532b4d848ab",
      "parents": [
        "39a1b773817aafc98e20910d2dd6dd790ea08bf3"
      ],
      "author": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Mon Nov 16 17:26:33 2015 -0800"
      },
      "committer": {
        "name": "Josh Gao",
        "email": "jmgao@google.com",
        "time": "Tue Nov 17 14:44:50 2015 -0800"
      },
      "message": "debuggerd: remove some levels of indentation.\n\nUse ScopedFd and unique_ptr to manage resources, so that we can early\nexit instead of having 9 levels of indentation.\n\nChange-Id: Ia5fed76c7d959f1f198ea540c56c508f7e1585c4\n"
    },
    {
      "commit": "30622bbb209db187f6851e4cf0cdaa147c2fca9f",
      "tree": "a44de699c1a54f4df2541d57616af75f9c816aa6",
      "parents": [
        "c52b3c08fa5ea3680ffcd68c2a1d0542d09f0509"
      ],
      "author": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Oct 22 13:04:22 2015 -0700"
      },
      "committer": {
        "name": "Dan Willemsen",
        "email": "dwillemsen@google.com",
        "time": "Thu Oct 22 13:12:18 2015 -0700"
      },
      "message": "Remove __DATE__/__TIME__ from init and debuggerd\n\nKeeping these means that every build has different init and debuggerd\nbinaries, even if the source was the same. So OTAs that don\u0027t touch\nthese sources would still need to update the binaries.\n\nBoth of these messages are only informational, so can be safely removed.\nBootchart already encodes build-specific information from the system\nproperties.\n\nBug: 24204119\nChange-Id: I7ebd65a20a3e031e7528c9f741616e20b3cd7446\n"
    },
    {
      "commit": "468573930df71230ab43a356d2b7c2e960a2f1ea",
      "tree": "7f1fc48cd5298f58662926f1342e0c091db047be",
      "parents": [
        "d7aea443d9bc0b1f37a2c31d0d476d61ff41fb66"
      ],
      "author": {
        "name": "William Roberts",
        "email": "william.c.roberts@intel.com",
        "time": "Tue Oct 06 12:03:01 2015 -0700"
      },
      "committer": {
        "name": "William Roberts",
        "email": "william.c.roberts@intel.com",
        "time": "Tue Oct 06 12:25:27 2015 -0700"
      },
      "message": "debuggerd: audit pid, uid and gid on SE Linux denial\n\nWhen debugging SE Linux audit messages from debuggerd, its\nunclear what process is triggering the access violation. To\nassist in debugging, we also log pid, uid and gid.\n\nBefore:\navc:  denied  { dump_backtrace } for scontext\u003du:r:dumpstate:s0 ...\n\nAfter:\navc: denied  { dump_backtrace } for pid\u003d198 uid\u003d1019 gid\u003d1019 ..\n\nChange-Id: I8263e6f5e77917139b73c3e84b76f7f97fd98003\nSigned-off-by: William Roberts \u003cwilliam.c.roberts@intel.com\u003e\n"
    },
    {
      "commit": "f39383103b888a38e486e8066d7c35838e2f98d4",
      "tree": "7256eae3e68e8e503c6c67ce6b7d20a2e89a7ea3",
      "parents": [
        "dcf890914c7571d3068046b9df1f672e9f45b4d2"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 30 08:15:57 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jul 30 08:15:57 2015 -0700"
      },
      "message": "bionic no longer sends SIGPIPE to debuggerd.\n\nStatic binaries don\u0027t get the signal handler installed (that\u0027s done by the\ndynamic linker) so we don\u0027t need to worry about seeing SIGPIPE crashes from\nold binaries.\n\nBug: http://b/20659371\nChange-Id: I3b5566634fadd3e822262561188d29814bccd1fd\n"
    },
    {
      "commit": "d79f2bebccde3ae8843dac522594234aa295190e",
      "tree": "42a1a1c95720d18c65047c100c15bc54017b95de",
      "parents": [
        "41a0654e2a76a8c639b2265513345cc4c268560d"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 01 15:42:05 2015 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Wed Jul 08 16:01:49 2015 -0700"
      },
      "message": "New property that determines when to wait for gdb.\n\nUse debug.debuggerd.wait_for_gdb being set to non-zero to\ndetermine if debuggerd should stop and wait for someone to\nattach gdb to the crashing process.\n\nBug: 22233908\nChange-Id: Id55a1572b479a70d395b7270392ce6fb70dbfdca\n"
    },
    {
      "commit": "39a28c2526ae815cc3d074f01b908365f5c0c325",
      "tree": "bfdd175652fb2fd3f5cbe8762f77e6d4a640ae5b",
      "parents": [
        "913ef1ca5adb7f04b8e7282565ae98c656ebf90b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 07 14:34:39 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Jul 07 14:34:39 2015 -0700"
      },
      "message": "Fix debuggerd\u0027s gdbclient instructions.\n\nWe improved gdbclient to make the process simpler, but didn\u0027t update\ndebuggerd to match.\n\nBug: http://b/22233857\nChange-Id: If4137943f567a9e566a3ac7f485c9b1eab2c68e9\n"
    },
    {
      "commit": "4d87095ebfefdb9e641492462f0a0e21d5b96ecf",
      "tree": "436768267355be6e72efa4481635954fa28a3661",
      "parents": [
        "555d91985d174217c3e805997bcd86d9c94f5a6b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 12 22:03:50 2015 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jun 12 22:12:33 2015 -0700"
      },
      "message": "Remove calls to is_selinux_enabled()\n\nd34e407aeb5898f19d4f042b7558420bbb3a1817 removed support for\nrunning with SELinux completely disabled. SELinux must either be\nin permissive or enforcing mode now.\n\nRemove unnecessary calls to is_selinux_enabled(). It always returns\ntrue now.\n\nChange-Id: Ife3156b74b13b2e590afe4accf716fc7776567e5\n"
    },
    {
      "commit": "47b0134ec2b5e8c8b5b5671cd4a3e41261275532",
      "tree": "4ba003cb327d8876bd8a4a7a89573501538a2857",
      "parents": [
        "747a6f22cda0c74b66777e75aff384f0c09474ba"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 15 19:16:40 2015 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 15 19:16:40 2015 -0700"
      },
      "message": "Don\u0027t use TEMP_FAILURE_RETRY on close in system/core.\n\nBug: http://b/20501816\nChange-Id: I1839b48ee4f891b8431ecb809e37a4566a5b3e50\n"
    },
    {
      "commit": "9774df613409c91f01ced1483bc01f42f6b4bf63",
      "tree": "3da5f40e44d496b2b9278d0cd2ab6b0ebce454e9",
      "parents": [
        "45c4c06ffe6f38e0f77f37f488e07f2537eddd45"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Thu Jan 15 14:47:36 2015 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Tue Jan 20 17:22:07 2015 -0800"
      },
      "message": "Move 32 bit/64 bit check into debuggerd.\n\nOn 64 bit systems, calls to dump_backtrace_to_file or dump_tombstone\ntry and directly contact the correct debuggerd (32 bit vs 64 bit)\nby reading the elf information for the executable.\nUnfortunately, system_server makes a call to dump_backtrace_to_file\nand it doesn\u0027t have permissions to read the executable data, so it\ndefaults to always contacting the 64 bit debuggerd.\nThis CL changes the code so that all dump requests go to the 64 bit\ndebuggerd, which reads the elf information and redirects requests for\n32 bit processes to the 32 bit debuggerd.\n\nTesting:\n\n- Forced the watchdog code in system_server to dump stacks and\n  verified that all native stacks are dumped correctly.\n- Verified that dumpstate and bugreport still properly dump the native\n  processes on a 64 bit and 32 bit system.\n- Intentionally forced the 64 bit to 32 bit redirect to write only a\n  byte at a time and verified there are no errors, and no dropped data.\n- Used debuggerd and debuggerd64 to dump 32 bit and 64 bit processes\n  seemlessly.\n- Used debuggerd on a 32 bit system to dump native stacks.\n\nBug: https://code.google.com/p/android/issues/detail?id\u003d97024\nChange-Id: Ie01945153bdc1c4ded696c7334b61d58575314d1\n"
    },
    {
      "commit": "1072f917cfa36ff905c31122a3cd99224e305932",
      "tree": "d3891827ac393205351b6230e0d2b182ce5e3eae",
      "parents": [
        "cb8c583d493a98cd1499c64e7c68f3ac37ebb7cd"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Oct 31 21:34:38 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Nov 03 11:26:33 2014 -0800"
      },
      "message": "Fix debuggerd issues.\n\n- Fix a problem where a tid exits before the attach completes, and it\n  causes debuggerd to self terminate.\n- Fix a problem where sibling tid dumps do not properly wait for the tid\n  to get signalled.\n\nBug: 17800180\nBug: 12567315\n\n(cherry picked from commit 84ddb34a3af77dbe490aaa07b738bbfd7109d5ba)\n\nChange-Id: I45e33865614d4c96f4a89cf117398666b556d500\n"
    },
    {
      "commit": "69b800391cad3b1c5fd88f1370f7522f9efb4c85",
      "tree": "a61af8565be026cf2f14940a8a5b2d27b6aca4b1",
      "parents": [
        "73290cd1369422260f1843dc36949c27422c0300"
      ],
      "author": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Thu Jul 24 15:23:05 2014 -0400"
      },
      "committer": {
        "name": "Stephen Smalley",
        "email": "sds@tycho.nsa.gov",
        "time": "Thu Jul 24 16:01:56 2014 -0400"
      },
      "message": "Add SELinux MAC to debuggerd.\n\ndebuggerd allows uid-0 processes to dump tombstones or backtraces\nof any process, and uid-system processes to dump backtraces of any\nprocesses.  Restrict these operations via SELinux based on the\nclient context, the target process context, and the action.\n\nDepends on I8e120d319512ff207ed22ed87cde4e0432a13dda for the\ncorresponding policy definitions.\n\nChange-Id: Ib317564e54e07cc21f259e75124b762ad17c6e16\nSigned-off-by: Stephen Smalley \u003csds@tycho.nsa.gov\u003e\n"
    },
    {
      "commit": "75582957cfe1c985aa58dd64d7e1405fa93b04e0",
      "tree": "65ada54a148a025442d0d420169be2e29c5bb0c4",
      "parents": [
        "01ad77107bfdc641ad818fe452448f0887aef961"
      ],
      "author": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Thu Jun 26 13:22:48 2014 -0700"
      },
      "committer": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Fri Jun 27 09:21:12 2014 -0700"
      },
      "message": "Fixed tid/pid mixup in debuggerd gdbclient output.\n\nNow the debugging output shows the tid of the crashed thread instead of\nthe pid of the process that crashed.\n\nChange-Id: I637f409ff02d73d458edc6d1a5c462c21d128211\n"
    },
    {
      "commit": "20c214f857ea97cfbfdd16c006601ff1369db0ca",
      "tree": "a12dddc1bfda9cc54894a7676af3f02be79c9e86",
      "parents": [
        "f473200d355a10dca1260948acc85bf059034768"
      ],
      "author": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Tue Jun 24 10:04:41 2014 -0700"
      },
      "committer": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Tue Jun 24 10:04:41 2014 -0700"
      },
      "message": "Fixed pathname for connecting to debugger.\n\nThe debug output was still showing the pathname that worked with\ngdbclient before my changes, and therefore did not work after the fact.\n\nChange-Id: Ie12d79f5346088914ce0a70bda69780707b31d31\n"
    },
    {
      "commit": "e901c1bf8ab7455ccb013244959045d4cddc124b",
      "tree": "2f43bbb217a8134840546d255f9e9e471766e791",
      "parents": [
        "030ba83c28c4d6faa23ccb20d1001b9be6464c3a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 11:46:27 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 11:46:27 2014 -0700"
      },
      "message": "Fix debuggerd \"format \u0027%p\u0027\" build breakage.\n\nChange-Id: I589d44485e55c23d1f1a6edfa8310a90cac2429e\n"
    },
    {
      "commit": "50eb546ec1584c04cf18f1941a042d7c5d045a67",
      "tree": "6b04d86e7042d0470c0fcd4ce03451751d9c1b48",
      "parents": [
        "3f55d2f4e69dd155d558fc2aa38e6f9bb0900152"
      ],
      "author": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Wed Jun 18 14:17:57 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jun 19 10:59:01 2014 -0700"
      },
      "message": "Removed log.quiet and log \u003d NULL cases from debuggerd.\n\nNow the functionality implemented by these semi-confusing cases has been\nreplaced with the same logtype enum behavior that is easier to\nunderstand, and cases that used log-looking behavior to print to logcat\n(when log \u003d NULL) now use the more transparent ALOGE/ALOGD functions.\n\nChange-Id: I7e38f2d4ca74a828df4d2266b3ea34edd3c6f5bb\n"
    },
    {
      "commit": "62ba489ba00a2689d4e257bc178cff87495f99d7",
      "tree": "822e4e940901af653cb6ecdd4a5d756e9c81ee43",
      "parents": [
        "59d16c9e9171f4367ad3a0516e7000c0d95e89cf"
      ],
      "author": {
        "name": "Brigid Smith",
        "email": "brigidsmith@google.com",
        "time": "Tue Jun 10 11:53:08 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Jun 16 14:41:21 2014 -0700"
      },
      "message": "Changing how debuggerd filters log messages to different locations.\n\nThe system by which debuggerd filters its output to different locations\nis now based on an enum called logtype with easy to understand\ncategories for log messages (like THREAD, MEMORY, etc.) instead of the\nold, fairly esoteric scope_flags variable.  Now much of the output that\npreviously went to logcat does not show up on the screen, but all output\ncan be found in the tombstone file.  In addition, the tombstone\u0027s\nlocation is now printed so it can be located easily.\n\nBug: 15341747\nChange-Id: Ia2f2051d1dfdea934d0e6ed220f24345e35ba6a2\n"
    },
    {
      "commit": "a323b504a70af5f143532f0ef521eb61ecddad6b",
      "tree": "92cd44fe32508e1e4dde5242a454a9a500debe73",
      "parents": [
        "541859dbf710946f03999a962e85c4ca3d5c816a"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 21:12:17 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 21:12:17 2014 -0700"
      },
      "message": "Teach debuggerd the name of SIGTRAP.\n\nAlso add SIGTRAP to the list of signals we don\u0027t want to double fault on.\n\nBug: 15024256\nChange-Id: I23ab80800563c007fcd3e42527329fedf762f0c8\n"
    },
    {
      "commit": "27ab751c7bd0dbdb9c3d19034ffb133b545ce233",
      "tree": "9253b9513582fab6e09ed1d52d0dbe2e63de1c72",
      "parents": [
        "9cb0b5719c0ac5fefc043f0c61b1640e058b7793"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 20:54:36 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 20:54:36 2014 -0700"
      },
      "message": "Remove the broken LED flashing code from debuggerd.\n\nChange-Id: I4d0cbe14daa90ac5f91ce4597584448ee3c65dda\n"
    },
    {
      "commit": "d9bf2b21370faeda4ef57932a42a14c05557e71a",
      "tree": "65aae3ce73bec2761cc804c2afaf3c1692424ce5",
      "parents": [
        "770cd7c7e7c18a657f233d86aeecb1d9f3091449"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 19:16:22 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 19:51:41 2014 -0700"
      },
      "message": "Output correct gdbserver instructions from debuggerd.\n\nBug: 15021938\nChange-Id: I2df433d939f5f83ed2a2a30af357b83e4d8e5331\n"
    },
    {
      "commit": "7e35ae8fc840cc1855d26084fdd72cbc3241f04d",
      "tree": "734df3175f7c6a392792442065b91e74a2762688",
      "parents": [
        "d20ba7fca295453648bc9093db03c16efbc6df1b"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 17:05:19 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri May 16 17:27:59 2014 -0700"
      },
      "message": "Add SIGTRAP support to crasher and debuggerd.\n\nBug: 15024256\nChange-Id: I3f34993fcfd9799306852b0a2195db468370be6e\n"
    },
    {
      "commit": "855fcc3114c20ff9fd286fe1723d1413fec9685a",
      "tree": "012f6de674c3ba210b9f1de42d9c7607a6e9862d",
      "parents": [
        "2317287d18fae3f9ae0f3beb7748a804f06b5720"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 25 16:05:34 2014 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Apr 25 20:20:39 2014 -0700"
      },
      "message": "Use the si_code value bionic passes us.\n\nBionic needs to re-raise various signals, which means the si_code\ndebuggerd sees has been clobbered. If bionic sends us the original\nsi_code value, we can use that instead of the one we see when the\nptrace the crashed process\u0027 siginfo.\n\nChange-Id: If116a6bc667d55a6fb39b74f96673292af4e4c8c\n"
    },
    {
      "commit": "0df8e4f86c93016daa2a6040c87247c4658cd33a",
      "tree": "e433833f3c95c4f17dd4604770845dc18e796d66",
      "parents": [
        "71de56a08cac3353334c2253748fdf8c37ec4aa1"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 07 12:13:30 2014 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Feb 07 12:13:30 2014 -0800"
      },
      "message": "Use socklen_t instead of int in debuggerd.\n\nAlso other trivial C++ cleanup.\n\nChange-Id: I9b5278c5205e0ea4f9dcbbe3e7b99921dd2436dc\n"
    },
    {
      "commit": "abc60c26b7448e6b2842351688a7a823b8b787d6",
      "tree": "82bb8aed19dbc109ad06a2c8887b65fbdf63c4f3",
      "parents": [
        "e94985a2514312e7103fbb6a6a45e473031cb6c0"
      ],
      "author": {
        "name": "Kévin PETIT",
        "email": "kevin.petit@arm.com",
        "time": "Thu Dec 19 12:36:59 2013 +0000"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 30 18:05:03 2014 -0800"
      },
      "message": "AArch64: Port debuggerd\n\nChange-Id: Ib18f76f375a1d70c84e0a09d221e17ac43144b96\nSigned-off-by: Kévin PETIT \u003ckevin.petit@arm.com\u003e\n"
    },
    {
      "commit": "20303f856f1f1cdb5af58af0b116b8c598f0ea5c",
      "tree": "de0b205001d3afdf97bd54e4ee39a81750e9bf70",
      "parents": [
        "e76343ef72458aff8fdc25c57f4e84407c05a2f2"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 10 16:33:16 2014 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Jan 13 14:21:52 2014 -0800"
      },
      "message": "Next phase of the move, reformat use C++ features.\n\nUse the libbacktrace C++ interface instead of the C interface in debuggerd.\n\nReformat the debuggerd code to be closer to Google C++ style.\n\nFix all debuggerd casts to be C++ casts.\n\nAdd a frame number to the frame data structure for ease of formatting and\nadd another FormatFrameData function.\n\nChange the format_test to use the new FormatFrameData function.\n\nModify all of the backtrace_test to use the C++ interface.\n\nChange-Id: I10e1610861acf7f4a3ad53276b74971cfbfda464\n"
    },
    {
      "commit": "d607495b892fe6ffa1cd30eaad114eec97d77681",
      "tree": "76e9a713373ced70dd17c884d499b83c5e54249e",
      "parents": [
        "261ff50e32b2b2a41bd3993c37abb5a9a94e431b"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 10 16:05:12 2014 -0800"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 10 16:05:12 2014 -0800"
      },
      "message": "Move to C++ for debuggerd.\n\nThis is part 1, only including the bare minimum changes because\nour diff tool doesn\u0027t easily show differences when a file moves. This\nalso breaks it into a small chunk in case some other changes break things,\nas unlikely as I think that will be.\n\nChange-Id: Ib7a3e7a2cc1ac574d15b65fda23813ebcf5d31af\n"
    },
    {
      "commit": "261ff50e32b2b2a41bd3993c37abb5a9a94e431b",
      "tree": "9a54a145b9561698132ab860ed9d5366f826aa6a",
      "parents": [],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Jan 10 22:56:38 2014 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Fri Jan 10 22:56:38 2014 +0000"
      },
      "message": "Merge \"Init the abort_msg_address value.\""
    }
  ]
}
