RFR: 8284336: CDS SignedJar.java test fails due to archived Reference object

Ioi Lam iklam at openjdk.java.net
Fri Apr 8 03:16:16 UTC 2022


During `java -Xshare:dump`, `ClassLoaders.bootLoader().resourceCache` is usually null. However, if a signed class is loaded, `resourceCache` will point to a `java.lang.ref.SoftReference`. Although rare (we have never seen this during our testing), it's possible for `resourceCache.discovered` to directly or indirectly point to another `Reference` which may contain an object that cannot be archived.

The fix is simple: reset the `resourceCache` field of all three archived ClassLoader objects (boot/platform/app).

I cannot reproduce the problem and I am unable to write a deterministic test case. However, the bug reporter has tested my preliminary patch and is no longer able to reproduce the failure.

Please see the bug report [JDK-8284336](https://bugs.openjdk.java.net/browse/JDK-8284336) for detailed analysis and traces.

-------------

Commit messages:
 - 8284336: CDS SignedJar.java test fails due to archived Reference object

Changes: https://git.openjdk.java.net/jdk/pull/8151/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8151&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8284336
  Stats: 28 lines in 5 files changed: 25 ins; 0 del; 3 mod
  Patch: https://git.openjdk.java.net/jdk/pull/8151.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/8151/head:pull/8151

PR: https://git.openjdk.java.net/jdk/pull/8151


More information about the core-libs-dev mailing list