RFR: 8283276: java/io/ObjectStreamClass/ObjectStreamClassCaching.java fails with various GCs
Aleksey Shipilev
shade at openjdk.java.net
Thu Jun 16 08:16:42 UTC 2022
Test appears to pass fine with G1. But it fails with other GCs, for example Parallel, Shenandoah, etc, it fails:
$ CONF=linux-x86_64-server-fastdebug make test TEST=java/io/ObjectStreamClass/ObjectStreamClassCaching.java TEST_VM_OPTS="-XX:+UseParallelGC"
test ObjectStreamClassCaching.testCacheReleaseUnderMemoryPressure(): success
test ObjectStreamClassCaching.testCachingEffectiveness(): failure
java.lang.AssertionError: Cache lost entry although memory was not under pressure expected [false] but found [true]
at org.testng.Assert.fail(Assert.java:99)
at org.testng.Assert.failNotEquals(Assert.java:1037)
at org.testng.Assert.assertFalse(Assert.java:67)
I believe this is because `System.gc()` is not that reliable about what happens with weak references. As seen with other GCs, they can clear the weakrefs on Full GC. In fact, the test fails with G1 if we do a second System.gc() in this test. So the test itself is flaky. The fix is to avoid doing `System.gc()` altogether in that subtest. The test is still retained to see that reference is not cleared for a while.
Additional testing:
- [x] Linux x86_64 fastdebug, affected test with `-XX:+UseSerialGC`, 100 repetitions
- [x] Linux x86_64 fastdebug, affected test with `-XX:+UseParallelGC`, 100 repetitions
- [x] Linux x86_64 fastdebug, affected test with `-XX:+UseG1GC`, 100 repetitions
- [x] Linux x86_64 fastdebug, affected test with `-XX:+UseShenandoahGC`, 100 repetitions
- [x] Linux x86_64 fastdebug, affected test with `-XX:+UseZGC`, 100 repetitions
-------------
Commit messages:
- Fix
Changes: https://git.openjdk.org/jdk19/pull/27/files
Webrev: https://webrevs.openjdk.org/?repo=jdk19&pr=27&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8283276
Stats: 2 lines in 1 file changed: 0 ins; 1 del; 1 mod
Patch: https://git.openjdk.org/jdk19/pull/27.diff
Fetch: git fetch https://git.openjdk.org/jdk19 pull/27/head:pull/27
PR: https://git.openjdk.org/jdk19/pull/27
More information about the core-libs-dev
mailing list