)]}'
{
  "log": [
    {
      "commit": "1b3fb625b682bf2ee22563cb42e37411b64b050d",
      "tree": "d5d88a9420c1e9160e7d7bf2cdce8b0bc9a18d5c",
      "parents": [
        "5bcecf0a13c97d578321d1c7e067e28ad5e1322e"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Feb 08 10:54:38 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Feb 09 14:16:36 2021 +0000"
      },
      "message": "Do not dump details of OOME for thread peer.\n\nTest: testrunner.py --target --optimizing -t 004-ThreadStress\nBug: 154100060\nChange-Id: I69582d7d1e4f5ced71ac32210ad7a0e4402da510\n"
    },
    {
      "commit": "649beaaead32f7dc98def517414cc50050a09f35",
      "tree": "383b9901c7bef73c4bd3e6d9b71285cf79ab1a4e",
      "parents": [
        "f51d182c3d797bd14bcc66a3c0bf1fc6f9adf8ee"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 03 12:34:17 2021 +0000"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Wed Feb 03 20:43:04 2021 +0000"
      },
      "message": "Fix ThreadStress check script to filter stderr.\n\nTest: testrunner.py --host --optimizing -t 004-ThreadStress\nTest: testrunner.py --target --optimizing -t 004-ThreadStress\nBug: 154100060\nBug: 171865375\nChange-Id: If32cda4ee11696b3422112e842f84c938cb5664a\n"
    },
    {
      "commit": "b15e8797d2ca6fb480a940887c66dd2aae7c9065",
      "tree": "23bd6e44c31b45fde7d92bbe7620329a61c1fcf5",
      "parents": [
        "79bf0b8e9c704e63029bb3badf9c4872484a827b"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 28 12:20:59 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Nov 10 09:46:01 2020 +0000"
      },
      "message": "Verify ART run-tests\u0027 standard output and standard error separately.\n\nIntroduce expected standard error files for ART run-tests. Collect\ntests\u0027 standard output and standard error separately and check them\nagainst the corresponding expectation file.\n\nTest: Run ART run-tests on host and device using `testrunner.py`.\nTest: atest --test-mapping art:all\nTest: atest --test-mapping cts/hostsidetests/jvmti:all\nBug: 171865375\nBug: 147812905\nChange-Id: Ie95bec4a4684ff6791d464124ce8976339432d1f\n"
    },
    {
      "commit": "a073f46104fbce0482fb759d5ccfb32ee39cc973",
      "tree": "985538ce69fa4d9253725cddaca936ddc3eaea86",
      "parents": [
        "5a19854c682a994729f704806d6c0de1de349631"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 28 12:48:24 2020 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Nov 05 18:15:49 2020 +0000"
      },
      "message": "Rename ART run-tests `expected.txt` files as `expected-stdout.txt`.\n\nThis is in preparation for the addition of `expected-stderr.txt` files\nin all ART run-test directories, which will record the expected\nstandard error for each of these tests, and which will be verified\nalong with `expected-stdout.txt`.\n\nTest: Run ART run-tests on host and device using `testrunner.py`.\nTest: atest --test-mapping art:all\nBug: 171865375\nBug: 147812905\nChange-Id: I37e3c4b8409475790e2fc63514cdf57156d47ff4\n"
    },
    {
      "commit": "aacf977a3b3af644a7e2eb58d8e56a23d1f3d215",
      "tree": "6a595bf88f3124e61c826bcd72520dd406664f1e",
      "parents": [
        "4ef451aecd4008ccee2ebf6136a70ed6a5c14717"
      ],
      "author": {
        "name": "Orion Hodson",
        "email": "oth@google.com",
        "time": "Wed Jul 22 21:51:00 2020 +0100"
      },
      "committer": {
        "name": "Treehugger Robot",
        "email": "treehugger-gerrit@google.com",
        "time": "Thu Jul 23 13:18:06 2020 +0000"
      },
      "message": "Reword some comments to be more inclusive\n\nAlso corrects a typo s/He/We/.\n\nBug: 161336379\nBug: 161850439\nBug: 161896447\nTest: m\nChange-Id: Ie8e37310eb777b7ee41a13f8894e99795c29a98a\n"
    },
    {
      "commit": "f75dce49ebe792cfd0b62c59c86fdc793926ee4d",
      "tree": "72a50f8667ee88d3f030f4de91867666ab8064fa",
      "parents": [
        "a8d23cb7febebc44ddfc03a3a135bb983eb95029"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Mon Apr 08 09:36:23 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 09 01:01:02 2019 +0000"
      },
      "message": "Revert^2 \"Delete GSS\"\n\nBug: 73295078\nBug: 72738921\nBug: 33795328\nTest: test/testrunner/run_build_test_target.py -j50 art-ss-gc\n\nThis reverts commit e18588381b34a5ed24417c826dc389a91f8d2b7f.\n\nChange-Id: I116b7ab7dec7cafebb1e718caea71c95353417ea\n"
    },
    {
      "commit": "e18588381b34a5ed24417c826dc389a91f8d2b7f",
      "tree": "23eea25005dd814093f3f4ffd33d77619ae12388",
      "parents": [
        "926c5f03655562e3e4eecd0d1a7b6d6c5dc6ed9a"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Apr 06 07:50:25 2019 +0000"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Sat Apr 06 17:29:37 2019 +0000"
      },
      "message": "Revert \"Delete GSS\"\n\nThis reverts commit 1397ea10a8e0409c74efe251721a2ee9ffaa3127.\n\nReason for revert: Tests failing\n\nChange-Id: Ie25f7342f67685e2b4f80f8344a8a4d7e988f09f\n"
    },
    {
      "commit": "1397ea10a8e0409c74efe251721a2ee9ffaa3127",
      "tree": "aa7c44dd14f6161e6eb0aabe0cf281cb8ecdf859",
      "parents": [
        "3b23f7568077a10cb3dfd0bb7d1c5f4c035d65dc"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Apr 02 10:54:37 2019 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Apr 05 15:54:52 2019 +0000"
      },
      "message": "Delete GSS\n\nDeleted GSS and related code.\n\nBug: 73295078\nBug: 72738921\nBug: 33795328\n\nTest: test-art-host\nChange-Id: I56d6c25a01abf3a969771c2161f9216c34a622e3\n"
    },
    {
      "commit": "aa31f4944936cabb8cc307890de9fa54ceda6de8",
      "tree": "7485bb1d985244ca54cba25f56585f0ac4e30039",
      "parents": [
        "ae5d77d323c8456343e30571c0f67e40b15c7af1"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Nov 01 18:57:38 2018 +0000"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Mon Nov 05 11:01:51 2018 -0800"
      },
      "message": "Revert^4 \"Implement LockSupport.park with a futex\"\n\nThis reverts commit 13f4d9631db981ae5008073db4df9c6a934fc9f3.\n\nReason for revert: Fixing ThreadStress timeouts.\n\nChange-Id: I9f8c3f56eccfadc3751049731e8d427873cc7841\n"
    },
    {
      "commit": "ce0b077f66e180f44ec8fab364429c942e48689d",
      "tree": "04fef9b17fe4b958c5c9747aabeee20bb4e569ec",
      "parents": [
        "91587ea543d42e05975f16f9dc7720d47f5cd75d"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Nov 05 15:01:29 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Nov 05 15:01:29 2018 +0000"
      },
      "message": "Revert \"Add LockSupport.park to 004-ThreadStress\"\n\nThis reverts commit 91587ea543d42e05975f16f9dc7720d47f5cd75d.\n\nReason for revert: Creates timeouts in automated testing.\n\nBug: 119017401\nChange-Id: I0e0217d30b564d8224d73a381a34ca5394f3128c\n"
    },
    {
      "commit": "91587ea543d42e05975f16f9dc7720d47f5cd75d",
      "tree": "f3ca5f8c8f87ab020274af7610ac3ef002be33ea",
      "parents": [
        "1e152a6090c546f4a6184a5610c85cae7ac77068"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Fri Nov 02 08:51:10 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Fri Nov 02 15:52:21 2018 +0000"
      },
      "message": "Add LockSupport.park to 004-ThreadStress\n\nBug: 28845097\nTested: Ran in a loop overnight\nChange-Id: I6e1063a2379e8bfe86a10f0d93b05e1d8f5d6740\n"
    },
    {
      "commit": "13f4d9631db981ae5008073db4df9c6a934fc9f3",
      "tree": "928c363c96854ac8db404a0ddd11adf8c66ea1c0",
      "parents": [
        "4e7077d795ab94d40c76ae7b9245fd5dcbb7716c"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 01 11:34:29 2018 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Thu Nov 01 11:34:29 2018 +0000"
      },
      "message": "Revert \"Revert^2 \"Implement LockSupport.park with a futex\"\"\n\nThis reverts commit 4e7077d795ab94d40c76ae7b9245fd5dcbb7716c.\n\nBug: 28845097\n\nReason for revert: ThreadStress flakes.\n\nChange-Id: Ibe29c2f679a642ccffea51c2fcf7dfaaed2dc305\n"
    },
    {
      "commit": "4e7077d795ab94d40c76ae7b9245fd5dcbb7716c",
      "tree": "df6ab853427ab64353933b50637bffb584938274",
      "parents": [
        "97d40f9c7b1157783d09861ce76d3a0b3da73cbe"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Oct 18 13:34:39 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Wed Oct 31 17:19:19 2018 +0000"
      },
      "message": "Revert^2 \"Implement LockSupport.park with a futex\"\n\nReason for revert: Fixed unused-argument compile error on mac\n\nThis resolves a contention issue where a thread unparking a higher\npriority thread would see a bunch of repeated wakeups. It also resolves\nan issue where LockSupport.parkUntil would not return on time if the\nsystem clock changed while the thread was parked.\n\nBug: 28845097\nTested: ./test.py -b --host --verbose -j20\nChange-Id: Iff71a0e23d0a9fbe072a092bec40a39192c195eb\n"
    },
    {
      "commit": "5485371cf3894d71e0d0fe2bdf639fde478012ca",
      "tree": "3b8f742544db21dbd4994ec204c19eaf613a9b10",
      "parents": [
        "5e1a75c1d12ea47bdc0f73d378b5fa25326829f4"
      ],
      "author": {
        "name": "Filip Pavlis",
        "email": "pavlis@google.com",
        "time": "Wed Oct 31 12:43:13 2018 +0000"
      },
      "committer": {
        "name": "Filip Pavlis",
        "email": "pavlis@google.com",
        "time": "Wed Oct 31 12:43:13 2018 +0000"
      },
      "message": "Revert \"Implement LockSupport.park with a futex\"\n\nThis reverts commit 5e1a75c1d12ea47bdc0f73d378b5fa25326829f4.\n\nReason for revert: This CL unfortunately breaks:\nsdk_gphone_x86-sdk_addon_mac\nsdk_mac\n\nFollowing error:\nart/runtime/thread.cc:370:4: warning: \"LockSupport.park/unpark implemented as noops without FUTEX support.\" [-W#warnings]\n#warning \"LockSupport.park/unpark implemented as noops without FUTEX support.\"\n^\nart/runtime/thread.cc:295:24: error: unused parameter \u0027is_absolute\u0027 [-Werror,-Wunused-parameter]\nvoid Thread::Park(bool is_absolute, int64_t time) {\n^\nart/runtime/thread.cc:295:45: error: unused parameter \u0027time\u0027 [-Werror,-Wunused-parameter]\nvoid Thread::Park(bool is_absolute, int64_t time) {\n^\n1 warning and 2 errors generated.\n\nChange-Id: Iae41cce7cd5fc38f605173519931491a019f7c80\n"
    },
    {
      "commit": "5e1a75c1d12ea47bdc0f73d378b5fa25326829f4",
      "tree": "3a69bbfecee2527a0584cb7bc30fbf434f20c47d",
      "parents": [
        "f4fd65e393fe60f17e22ee7823f8dce4594c053d"
      ],
      "author": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Thu Oct 18 13:34:39 2018 -0700"
      },
      "committer": {
        "name": "Charles Munger",
        "email": "clm@google.com",
        "time": "Tue Oct 30 09:43:57 2018 -0700"
      },
      "message": "Implement LockSupport.park with a futex\n\nThis resolves a contention issue where a thread unparking a higher\npriority thread would see a bunch of repeated wakeups. It also resolves\nan issue where LockSupport.parkUntil would not return on time if the\nsystem clock changed while the thread was parked.\n\nBug: 28845097\nTested: ./test.py -b --host --verbose -j20\nChange-Id: I75458afc481b7a5860e67f8a421109308ce5ebc6\n"
    },
    {
      "commit": "ee18ebc16d72e558c827aa0af9547b1d83b708bc",
      "tree": "982ed444f325f62908ec1dd328406bbf96ea1280",
      "parents": [
        "7e3b455823d79436818742bb1edef124c7a56840"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 13 13:06:44 2018 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jun 13 13:06:44 2018 +0100"
      },
      "message": "Re-enable NonMovingAlloc operations in ThreadStress, except with GSS.\n\nWhen the Generational Semi-Space (GSS) collector is used,\nexplicitly assign frequencies to all ThreadStress operations\nand set the frequency of NonMovingAlloc operations to 0.\n\nAlso properly handle ThreadStress\u0027 `-nonmovingalloc` option,\nwhich was documented but not implemented.\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress (with GSS)\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress (without GSS)\nBug: 72738921\nChange-Id: Ia033a77d997eafa2bfa7244697ba7ffe31926133\n"
    },
    {
      "commit": "c3394e03ace5eb85d06f02b4ba3d22de88b6dae8",
      "tree": "9e7a1d14ee6a161821c5de227b70e9f8039e0d33",
      "parents": [
        "b2f1edc3d1f162bd9007f10bc66009eac5b2daab"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 22 17:49:36 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Feb 22 18:43:12 2018 +0000"
      },
      "message": "Fix exit status of `run` scripts executing more than one test.\n\nFor some ART run-tests, the `run` script executes more than one\ninstance of the test (e.g. test/004-ThreadStress/run executes the\nThreadStress test twice: the first time as a normal run, the second\ntime in locks-only mode with stack-dump lock profiling). However,\nthese tests were returning the exit status of last test executed,\nwhich could hide a potential earlier failure. This change ensure we\nreturn the first failing exit status, if any.\n\nTest: art/test/testrunner/testrunner.py\nChange-Id: I5e4e4cc7d9311fe15637ea2f5248a0e9f2432d61\n"
    },
    {
      "commit": "e756f20b11db71509fa1cef4922b38efb253f6af",
      "tree": "c29d8d5fc4b367c236c264ca35b2f619a2cbb961",
      "parents": [
        "f346af51a5d44ee0a3cd26e7e0e1b28ec1c5579f"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jan 31 18:23:56 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Jan 31 18:23:56 2018 +0000"
      },
      "message": "Don\u0027t run NonMovingAlloc operations by default in ThreadStress.\n\nAllocations in the non-moving space fail the followin assertion\nwith the GSS collector:\n\n  semi_space.cc:363] Check failed: kUseRememberedSet \u003d\u003d rem_set !\u003d nullptr\n\nDisable them while we investigate.\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress\nBug: 72738921\nChange-Id: I35e01ffc3e54af8e1f2e53b7aeb2add5a2ef4271\n"
    },
    {
      "commit": "4732f12651a7dc2d37bb75580a5b3add920f3955",
      "tree": "10109acaae5257a9dd7a682eef9769d3d1afdce8",
      "parents": [
        "7a32347e83aa71809b7715c9488bfc8c94fd0688"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jan 30 13:52:41 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jan 30 13:52:41 2018 +0000"
      },
      "message": "Add an operation performing non-moving allocation in ThreadStress.\n\nThreadStress already has an `Alloc` operation, allocating in the\nmain (moving) space and a `LargeAlloc` operation, allocating in the\nLarge Object Space (LOS). This change adds a `NonMovingAlloc`\noperation, allocating in the non-moving space (using\ndalvik.system.VMRuntime.newNonMovableArray), in order to exercise the\nnon-moving space.\n\nRelevant default frequency maps are also adjusted to make room for\n`NonMovingAlloc` operations.\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress\nChange-Id: Ic2fcc0eea81b03d190a540ec31d0c9855881b433\n"
    },
    {
      "commit": "7a32347e83aa71809b7715c9488bfc8c94fd0688",
      "tree": "3c31b80e43d426bdca4044ddb7ac93d405827e22",
      "parents": [
        "8d8cf2e6098a8b167e03e387c50857477190bbad"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jan 16 13:59:32 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Jan 30 11:43:39 2018 +0000"
      },
      "message": "Add an option to stress only allocations in ThreadStress.\n\nAdd an \"--allocs-only\" option to ART run-test 004-ThreadStress,\nselecting a pre-set frequency map with allocation-related operations\nonly.\n\nAlso, remove an unnecessary lock object when handling option\n\"--locks-only\".\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress\nChange-Id: I0c4de69667dff258a52f2f7c36b88361776dc69a\n"
    },
    {
      "commit": "e44ee0c3d073e00e88f3a29f2a42129c3eba84e7",
      "tree": "65180639908c568845a2dd7402fa9c935df2cbeb",
      "parents": [
        "812d4d4091b07c83a340e775325b7f42c8521574"
      ],
      "author": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 08 10:26:17 2018 -0800"
      },
      "committer": {
        "name": "Alex Light",
        "email": "allight@google.com",
        "time": "Mon Jan 08 21:59:52 2018 +0000"
      },
      "message": "Do not abort if we fail to allocate a thread-peer on shutdown\n\nWe were aborting if we failed to allocate the \"Shutdown thread\" a\njava-peer. This can sometimes happen if there is very constrained\nmemory during shutdown for some reason. Since the thread-peer is only\nobservable in very rare situations (and the runtime is shutting down\nanyway) we will instead simply continue without it.\n\nWe also change a test that was hitting this situation to handle not\nhaving a thread peer.\n\nBug: 71623806\n\nTest: while ./test/run-test --host \\\n                            --prebuild \\\n                            --compact-dex-level none \\\n                            --optimizing \\\n                            --no-relocate \\\n                            --runtime-option -Xcheck:jni \\\n                            --pic-test \\\n                            --64 \\\n                            --build-with-javac-dx \\\n                            004-ThreadStress;\n      do; done\nTest: ./test.py --host -j50\nChange-Id: Ib159d03e9f4b0e4d5b1b071d4b85e94620679bb0\n"
    },
    {
      "commit": "a81a374e2b5f8ec62b17afc73efff16b35c9ba61",
      "tree": "45bdafcc0a8ca3b100735a271bd405f979881c5d",
      "parents": [
        "3165bb09dc04b61abd04bf8e263dd85d610694e4"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 04 13:11:52 2018 +0000"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Thu Jan 04 14:24:39 2018 +0000"
      },
      "message": "Ignore OOMEs in ThreadStress\u0027 QueuedWait operation.\n\nPrevious work on ThreadStress\u0027 QueuedWait operation avoided some\nout-of-memory issues by by forcing ahead-of-time initialization of\nclasses used by the Semaphore class (see\nhttps://android-review.googlesource.com/508595).\nHowever, the execution of code from the Semaphore can still throw an\nOutOfMemoryError as some of its code paths allocate memory. In that\ncase (which is expected to be rare), just ignore the OOME and continue\nthe execution.\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress\nBug: 71570713\nChange-Id: I0970e9cc768ce69c669ed75ade22961700ed4549\n"
    },
    {
      "commit": "ee98a1307fabcf48d20834de91da6aa77be9d8ac",
      "tree": "882a6273f491b2cb8d6eed61828c3ab1dd65978d",
      "parents": [
        "432d91004b79c79deebeee6f6197e43adf6caafd"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Wed Oct 11 17:17:55 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Mon Oct 16 15:16:51 2017 +0100"
      },
      "message": "Force ahead-of-time initialization of classes used in ThreadStress.\n\nThis is to prevent delayed initialization of classes used by\nQueuedWait, possibly leading to an OutOfMemoryError thrown while\ntrying to throw OutOfMemoryError.\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress\nBug: 67730573\nChange-Id: I7a79306b739050d89f19e533cb45fb43e4b39b3a\n"
    },
    {
      "commit": "0c806b16847dbd5813595adc9be09c623f912690",
      "tree": "5d427ae5c8e932b55d13f676b72ae685876149e8",
      "parents": [
        "f0c66eb04db3c9fc513f50dfaad1385cf703820e"
      ],
      "author": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Tue Aug 15 15:09:55 2017 +0100"
      },
      "committer": {
        "name": "Roland Levillain",
        "email": "rpl@google.com",
        "time": "Fri Aug 18 13:38:44 2017 +0100"
      },
      "message": "Add an operation using a semaphore to test 004-ThreadStress.\n\nAdd a new QueuedWait operation requiring the acquisition of\na permit from a java.util.concurrent.Semaphore, to exercise\njava.util.concurrent.locks.AbstractQueuedSynchronizer (used\nin the implementation of java.util.concurrent.Semaphore) in\n004-ThreadStress.\n\nAlso add missing command-line options and documentation for\nexisting operations.\n\nTest: art/test/testrunner/testrunner.py -t 004-ThreadStress\nBug: 63822989\nChange-Id: I99e55969a0df6565a4900ea3c14bf55a616c46a3\n"
    },
    {
      "commit": "d0210e58100e029e865e783beb7906090781f602",
      "tree": "ace7eea3b27e97e3e01060ea1d0a6ef277a8f89f",
      "parents": [
        "a0e63dfbfe2f2513a709e94b8a1ac17418396fdf"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 13:38:09 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Jun 23 15:51:11 2017 -0700"
      },
      "message": "ART: Add stack-dump mode for contention logging\n\nAdd a second threshold to contention logging. If this threshold\nis reached, log the owner and the contender thread to the logcat.\n\nRequires a bit of refactor in the contention logging code to hold\nthe locks correctly (different requirements for owner and contender).\nAdd -Xstackdumplockprofthreshold:ms to control the threshold value.\nAs with general contention logging, default to 0 \u003d off. Use ThreadStress\nwith --locks-only to get test coverage.\n\nBug: 62353392\nTest: m test-art-host\nChange-Id: I1b5a5130c4f908497ac06464130844f5ca42a5fb\n"
    },
    {
      "commit": "111b10957aee2c0f79310fcec4cff32eb90bf1c2",
      "tree": "043ef481eef7b7b9d4284860b58a66ef54b5ede6",
      "parents": [
        "19921b70fef519c644d56a6aeb7f82491ba1850c"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 20:28:23 2017 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Thu Jun 22 20:28:23 2017 -0700"
      },
      "message": "ART: Change contention logging lock strategy\n\nCompute possible contention (wrt/ sampling) first. Then keep the whole\nlogging section under the mutator lock *and* the thread-list lock so\nas to avoid any thread races.\n\nThis change is in preparation for heavier logging under heavy lock\ncontention.\n\nEnable contention logging in 004-ThreadStress.\n\nBug: 62353392\nTest: m test-art-host\nChange-Id: I7b9126bae273f0cddb681f5f013ce6d814c7b8c0\n"
    },
    {
      "commit": "0795f23920ee9aabf28e45c63cd592dcccf00216",
      "tree": "ff3f880c5e84f3316532b47d0e9a7729ade848ac",
      "parents": [
        "d1224dce59eb0019507e41da5e10f12dda66bee4"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Sep 27 18:43:30 2016 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 29 17:31:09 2016 -0700"
      },
      "message": "Clean up ScopedThreadStateChange to use ObjPtr\n\nAlso fixed inclusion of -inl.h files in .h files by adding\nscoped_object_access-inl.h and scoped_fast_natvie_object_access-inl.h\n\nChanged AddLocalReference / Decode to use ObjPtr.\n\nChanged libartbenchmark to be debug to avoid linkage errors.\n\nBug: 31113334\n\nTest: test-art-host\n\nChange-Id: I4d2e160483a29d21e1e0e440585ed328b9811483\n"
    },
    {
      "commit": "3ea7c9e552bc8a87439b6e6db9d143e2716bc62c",
      "tree": "e19509217d06156f093753e959c41f3327b0c709",
      "parents": [
        "b94b5706f0b8e2e1c7e1db22274f9f4bae0c4b5a"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 21 18:21:53 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Mon Jun 27 12:44:50 2016 +0100"
      },
      "message": "Fix 004-ThreadStress.\n\nSynchronize the start of performing the tasks after all\nthreads have been created and runners reported their start.\nThis prevents a daemon thread from allocating all memory\nbefore the main thread tries to allocate the next daemon\nthread, which is the likely culprit of failing to print any\noutput whatsoever (the main thread exits due to an uncaught\nOOME and printing the message also fails due to OOME).\n\nInstead of repeating attempts to print \"Finishing worker\"\nuntil it succeeds, print the message through JNI which does\nnot require any Java heap memory. Similarly, print caught\nThrowables through JNI. Also make sure to preallocate\nStrings that are used once we start running tasks to avoid\nconst-string throwing OOME. This also prevents a partial\nsuccess followed by a retry; we have seen a failure to\nprint the EOL, yielding \"Finishing workerFinishing worker\".\n\nChange the \"Thread exited...\" message to be printed only in\nDEBUG mode and compare the full output, ignoring different\nnumbers as the \"Starting worker for \u003cid\u003e\" may be reordered.\n\nTest: \"make -j 32 test-art-host-run-test-004-ThreadStress\"\n    (4 configs: with or without gcstress, 32-bit and 64-bit)\n    100 times while also keeping the machine under load with\n    \"make -j 32\" to repeatedly build another full AOSP tree.\nBug: 27371304\nChange-Id: I28286d70a08be64c36d0e49dd5558686813ff264\n"
    },
    {
      "commit": "5fe1026cca5df935bd55ab1ee6892eeae02819c4",
      "tree": "8bf44b5aeb1e353643f255ec3e504e18ddb815c7",
      "parents": [
        "453134813e9ba2b91622550d76ddff44a1ab48ab"
      ],
      "author": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 21 10:38:23 2016 +0100"
      },
      "committer": {
        "name": "Vladimir Marko",
        "email": "vmarko@google.com",
        "time": "Tue Jun 21 10:54:05 2016 +0100"
      },
      "message": "Catch additional OOME in ThreadStress.\n\nAnd use pthread_sigmask() instead of sigprocmask() because\nthe latter is unspecified in a multithreaded process.\n\nBug: 27371304\nChange-Id: Ia511ff62d38c0fcd985421442e506cdc5f8f30bf\n"
    },
    {
      "commit": "059e62711093bbc115e1d6ca56573e2df3ebdff8",
      "tree": "23318bf54a3eb6c9e77eb6261d9b1c92dfa276f7",
      "parents": [
        "1e086c6474bdc5315b9baaf3a316624a058b8ff2"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 05 12:57:56 2016 -0800"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jan 05 13:00:41 2016 -0800"
      },
      "message": "ART: Add large object allocation to ThreadStress\n\nTest interactions with large objects some more, as there are\nsometimes interactions between maps and unwind (in SIGQUIT).\n\n(Probably should ramp up the iterations/frequency, though.)\n\nChange-Id: I21368bfc584b9b642a39d3560391f929b5576b08\n"
    },
    {
      "commit": "62623401fe994ff2f2719faf3cdb3c23b92ccd96",
      "tree": "7ecf11ececadb2b541f06620af2db01b9a90f2f0",
      "parents": [
        "43c6d31c43c05d97511bb9658964fd3d2f32b915"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 19:15:05 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Tue Nov 03 10:26:03 2015 +0000"
      },
      "message": "Fix deadlock with the JIT code cache.\n\nAlso remove hack done for ThreadStress.\n\nChange-Id: Ie25c3bca08d9f2b8919706fa3fc26c5ab213f4a3\n"
    },
    {
      "commit": "709b38e0f263132cc7db1a0aea9eb27426567139",
      "tree": "6ac595aafd751fc8b402a9a4aba4af8cc185fa93",
      "parents": [
        "28b48026f0686f93b31b9cad47671c18837acc56"
      ],
      "author": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 17:41:37 2015 +0000"
      },
      "committer": {
        "name": "Nicolas Geoffray",
        "email": "ngeoffray@google.com",
        "time": "Wed Oct 28 17:44:58 2015 +0000"
      },
      "message": "Adjust jit code cache on ThreadStress to avoid timeouts.\n\nChange-Id: I00da947ba45be66bb24825af4fbe95b6fbe8fbc4\n"
    },
    {
      "commit": "72e36d84d8c6eb4a0396ce7e4de8f696ad3d2a7f",
      "tree": "b0674ce1c1650c842e05f269585bb9ede2e26bbd",
      "parents": [
        "10da8717e5e909556c7e7610d212db6c65fefbe2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Sep 17 20:46:56 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Fri Sep 18 10:59:39 2015 -0700"
      },
      "message": "Handle OOME during threadstress finishing message\n\nIf there is an OOME that occurs after the \"Finishing workers\" it\ncaused the test to fail.\n\nAlso guard worker thread creation by try catch for OOME.\n\nBug: 18577101\nChange-Id: I69367be0aad3f60093c02c7f63ae3c20757fb89b\n"
    },
    {
      "commit": "031768a340634e2dbdec1aebb2bb3fe509b2f1f6",
      "tree": "dcc51b140b69e90f60045d846f4c890bd322e1ad",
      "parents": [
        "dfb5f9ceb277f30ee961b27e72d968e0695611a6"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 27 10:25:02 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 27 15:16:30 2015 -0700"
      },
      "message": "Add non debug version of libarttest\n\nWe now pass the libarttest as an argument to the java program. This\nenables using libarttestd by default and libarttest when -O is\nspecified.\n\nChange-Id: I0de1ae01e2bb5f7b9c7fd7487b6cb55051f60657\n"
    },
    {
      "commit": "9d3c3fc49dc904ddd393f8d24ed062a42c68939a",
      "tree": "f62bdfcac262ba0875596aa39b7a60f57ae0daa3",
      "parents": [
        "edd0a6dbe26bb334f02d5abe649e3da9165277b2"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 18 11:42:03 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Tue Aug 18 11:52:15 2015 -0700"
      },
      "message": "Guard thread exited message by try-catch in ThreadStress\n\nBug: 18577101\nChange-Id: I1c3cbbfad09b88f4d913dc86bb6a89bf5b5269a8\n"
    },
    {
      "commit": "bf81547a47c46a8853092432635bfec6167a2388",
      "tree": "e46b95dc23586472449f87fb2c1e58f397a21907",
      "parents": [
        "837b64974977f615dd1f0662857b97536acdb4dd"
      ],
      "author": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 13 13:02:01 2015 -0700"
      },
      "committer": {
        "name": "Mathieu Chartier",
        "email": "mathieuc@google.com",
        "time": "Thu Aug 13 14:27:35 2015 -0700"
      },
      "message": "Ignore OOME in ThreadStress Daemon threads\n\nWhen the runtime is shutting down we don\u0027t allow GC, this can cause\nOOME in Daemon threads that are allocating. The OOME stack trace\nprinting can cause the test to fail.\n\nBug: 18577101\nChange-Id: Iabbce3d75caada361dd06942f4b3be9907596091\n"
    },
    {
      "commit": "def3fcdbc5e9ef21c16047caac53ab53fb02de0c",
      "tree": "aed01d7693974431ce853b32263a6cb29982b310",
      "parents": [
        "32a67404baa40664e9ace8eac81be0f4704413a5"
      ],
      "author": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Mon Aug 10 15:51:27 2015 -0700"
      },
      "committer": {
        "name": "Man Cao",
        "email": "manc@google.com",
        "time": "Mon Aug 10 15:53:24 2015 -0700"
      },
      "message": "Add daemon threads to 004-ThreadStress\n\nBug: 19537976\nChange-Id: I129e311aa6f7ca4f49d64ec50c0e07857b12b6d8\n"
    },
    {
      "commit": "f2fdc7368c5fd5d9cbb4bd1d962b887e87f0654c",
      "tree": "e7791dd6820d3f41c073c0c2fc7565e857d4c3b1",
      "parents": [
        "6bf6ce19df0b165122d5e9a593943e3bfb97ad4d"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jun 11 08:20:47 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Fri Feb 13 15:32:24 2015 -0800"
      },
      "message": "ART: Rewrite ThreadStress for easier extensibility\n\nChange-Id: Ie29918bef048e9ef44877c6c601de113ca38790e\n"
    },
    {
      "commit": "1c83cbc4a817acbd7f9abb5b29a2d418a958e6a1",
      "tree": "aae7ea1d5559718d6e264175aa1cb2ae1fc1e9ed",
      "parents": [
        "7dfc30b591aee167f0a38ab61a90894cc76f2066"
      ],
      "author": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Tue Jul 22 18:52:29 2014 -0700"
      },
      "committer": {
        "name": "Andreas Gampe",
        "email": "agampe@google.com",
        "time": "Wed Jul 23 10:03:00 2014 -0700"
      },
      "message": "ART: Make run tests out of oat tests\n\nTransforms all former oat tests into run tests.\n\nChange-Id: I190dd39456454c36e5538a2c044d993965a67533\n"
    }
  ]
}
