RFR: 8285914: AppCDS crash when using shared archive with old class file

Calvin Cheung ccheung at openjdk.java.net
Fri May 6 03:41:54 UTC 2022


On Thu, 5 May 2022 04:55:49 GMT, David Holmes <dholmes at openjdk.org> wrote:

> Thanks for the explanation Calvin, so it is not the nest-host that is old, but an interface implemented by the nest-host. The old interface prevents the nest-host from being archived and so the lambda-proxy also should not (can not) be archived. So this is really just a general constraint on class archiving: if a class A has a nest-host B, and B can not be archived, then A can not be archived. Is that correct? Or is there some reason this only affects lambda-proxy classes?

We record the nest host for a lambda proxy class during dump time so that we can ensure the nest host obtained during runtime is the same as the one recorded at dump time. Refer to the `SystemDictionaryShared::prepare_shared_lambda_proxy_class` function for more details.

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

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


More information about the hotspot-runtime-dev mailing list