[jdk16] RFR: 8258236: Segfault in ClassListParser::resolve_indy dumping static AppCDS archive

Coleen Phillimore coleenp at openjdk.java.net
Tue Dec 15 23:43:04 UTC 2020


On Tue, 15 Dec 2020 23:08:42 GMT, Calvin Cheung <ccheung at openjdk.org> wrote:

> Please review this change for JDK 16.
> 
> In ClassListParser::resolve_indy, if a class has previously failed verification, don't proceed with resolve indy for that class to avoid dereferencing a null cpcache pointer.
> 
> Passed tiers 1,2,3,4 tests.

Changes requested by coleenp (Reviewer).

src/hotspot/share/classfile/classListParser.cpp line 474:

> 472:       return;
> 473:     }
> 474:     MetaspaceShared::try_link_class(ik, THREAD);

Doesn't the check for failing verification belong after try_link_class(), which runs the verifier?

src/hotspot/share/classfile/classListParser.cpp line 467:

> 465:   Handle class_loader(THREAD, SystemDictionary::java_system_loader());
> 466:   Handle protection_domain;
> 467:   Klass* klass = SystemDictionary::resolve_or_fail(class_name_symbol, class_loader, protection_domain, true, THREAD); // FIXME should really be just a lookup

If an exception is unexpected, this should be CHECK not THREAD.

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

PR: https://git.openjdk.java.net/jdk16/pull/30


More information about the hotspot-runtime-dev mailing list