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