RFR 8243572: Multiple tests fail with assert(cld->klasses() != 0LL) failed: unexpected NULL for cld->klasses()

Harold Seigel harold.seigel at oracle.com
Tue Apr 28 17:27:46 UTC 2020


Hi,

Please review this fix for JDK-8243572 and JDK-8243336.  Both failures 
were caused by calling function ClassLoaderData::klasses() and expecting 
a non-null return value. However, when the CLD had no classes then NULL 
was returned causing the assertion failure in one case and SIGSEGV in 
the other.

Function klasses() was called in these places to determine if the 
ClassLoaderData was for a hidden class or an unsafe anonymous class.  
This was done during CLD statistics collection and for JFR events 
involving CLD's.

Since the JDK has replaced uses of unsafe anonymous classes with hidden 
classes, there should be very few unsafe anonymous classes.  So, it was 
decided (with mgronlun and mchung) that the VM and JFR need no longer 
distinguish between hidden and unsafe anonymous classes when gathering 
CLD statistics and when CLD's are displayed in JFR events.  Instead, 
unsafe anonymous classes will be counted as hidden classes for CLD 
statistics, and JFR will show CLD's for both hidden and unsafe anonymous 
classes as hidden.

Open Webrev: 
http://cr.openjdk.java.net/~hseigel/bug_8243572/webrev/index.html

JBS Bugs: https://bugs.openjdk.java.net/browse/JDK-8243572 and 
https://bugs.openjdk.java.net/browse/JDK-8243336

The fix was regression tested by running Mach5 tiers 1 and 2 tests and 
builds on Linux-x64, Solaris, Windows, and Mac OS X, by running Mach5 
tiers 3-5 tests on Linux-x64, and running tier 7 tests multiple times on 
Windows and also on Mac OS X.  Tier 7 testing on Linux-X64 is in progress.

Thanks, Harold



More information about the hotspot-runtime-dev mailing list