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

David Holmes dholmes at openjdk.java.net
Mon Oct 25 00:35:02 UTC 2021


On Fri, 22 Oct 2021 18:41:43 GMT, Calvin Cheung <ccheung at openjdk.org> wrote:

>> 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).
>
> Calvin Cheung has updated the pull request incrementally with one additional commit since the last revision:
> 
>   remove empty CleanupDumpTimeLambdaProxyClassTable ctor

src/hotspot/share/cds/metaspaceShared.cpp line 515:

> 513:   HeapShared::run_full_gc_in_vm_thread();
> 514: 
> 515:   SystemDictionaryShared::start_dumping();

What is the significance of this? It seems unrelated to the bug being fixed.

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

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


More information about the hotspot-runtime-dev mailing list