)]}'
{
  "log": [
    {
      "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"
    }
  ]
}
