RFR: 8274944: AppCDS dump causes SEGV in VM thread while adjusting lambda proxy class info

Calvin Cheung ccheung at openjdk.java.net
Thu Oct 21 21:58:34 UTC 2021


During dumping of CDS archive, the `ArchiveBuilder::gather_klass_and_symbol` set the address of an object to null if the
object cannot be archived. Since the lambda proxy class in this scenario contains an old version (major version < 50) of
interface which has been linked, the class won't be archived and its address will be set to null. The `SystemDictionaryShared::adjust_lambda_proxy_class_dictionary` is called after 
`ArchiveBuilder::gather_klass_and_symbol` and thus encountered the null pointer.

A fix is to add a function `SystemDictionaryShared::cleanup_lambda_proxy_class_dictionary` to cleanup the
`_dumptime_lambda_proxy_class_dictionary` at the beginning of the CDS dumping operation.

The proposed fix passed tiers 1 - 4 testing (including the new tests).

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

Commit messages:
 - fix trailing whitespace
 - 8274944: AppCDS dump causes SEGV in VM thread while adjusting lambda proxy class info

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

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


More information about the hotspot-runtime-dev mailing list