RFR: 8321401: Shenandoah: Each mutator must see FullGC before throwing OOM
Kelvin Nilsen
kdnilsen at openjdk.org
Wed Dec 6 16:31:53 UTC 2023
On Wed, 6 Dec 2023 15:36:58 GMT, Kelvin Nilsen <kdnilsen at openjdk.org> wrote:
>> src/hotspot/share/gc/shenandoah/shenandoahHeap.cpp line 885:
>>
>>> 883: // This will notify the collector to start a cycle, but will raise
>>> 884: // an OOME to the mutator if the last Full GCs have not made progress.
>>> 885: if (result == nullptr && !req.is_lab_alloc() && get_gc_no_progress_count() > ShenandoahNoProgressThreshold) {
>>
>> We need to be careful here. This essentially backs out the fix for:
>> * https://bugs.openjdk.org/browse/JDK-8316632
>> * https://bugs.openjdk.org/browse/JDK-8314935
>>
>> For the original change, I ran tier1, tier2 and tier3 tests with Shenandoah enabled on x86 and aarch64, per @shipilev 's request (https://github.com/openjdk/jdk/pull/15852#issuecomment-1729099298).
>>
>> make test TEST="tier1 tier2 tier3" TEST_VM_OPTS="-XX:+UseShenandoahGC" CONF=fastdebug
>>
>> These tests, specifically, will likely timeout without this check:
>>
>> make test TEST="runtime/reflect/ReflectOutOfMemoryError.java gc/InfiniteList.java runtime/ClassInitErrors/TestOutOfMemoryDuringInit.java compiler/uncommontrap/TestDeoptOOM.java" TEST_VM_OPTS="-Xlog:gc*=info:file=/tmp/oome.log -XX:+UseShenandoahGC" JTREG="REPEAT_COUNT=50" CONF=fastdebug
>
> I'll run these tests and report the results.
For the four explicit tests, 50 runs each, all passed.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16985#discussion_r1417622364
More information about the shenandoah-dev
mailing list