(S) RFR: 8154589: assert(k != NULL) failed: preloaded klass not initialized
David Holmes
david.holmes at oracle.com
Wed May 25 21:17:37 UTC 2016
Can I get a second review please.
Thanks,
David
On 25/05/2016 6:32 PM, David Holmes wrote:
> On 25/05/2016 3:05 PM, David Holmes wrote:
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8154589
>>
>> webrev: http://cr.openjdk.java.net/~dholmes/8154589/webrev/
>>
>> We sometimes see tests failing with a VM assertion failure that a klass
>> was not loaded (the actual assertion message is wrong):
>>
>> # assert(k != NULL) failed: preloaded klass not initialized
>>
>> Stack: [0xfffffd7fa80ff000,0xfffffd7fa81ff000], sp=0xfffffd7fa81fc570,
>> free space=1013k
>> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code,
>> C=native code)
>> V [libjvm.so+0x2a01a57] void VMError::report(outputStream*)+0x937
>> V [libjvm.so+0x2a02e4b] void VMError::report_and_die()+0x55f
>> V [libjvm.so+0x10b670b] void report_vm_error(const char*,int,const
>> char*,const char*)+0x55f
>> V [libjvm.so+0x28937e5] void
>> ConcurrentLocksDump::dump_at_safepoint()+0x43d
>> V [libjvm.so+0x287ab7e] void
>> Threads::print_on(outputStream*,bool,bool,bool)+0xcce
>> V [libjvm.so+0x2a372a7] void VM_PrintThreads::doit()+0x1b
>> V [libjvm.so+0x2a366e9] void VM_Operation::evaluate()+0xc5
>>
>>
>> In a few of the VMOperation doit_prologue methods we have this logic to
>> ensure the AOS class is loaded:
>>
>> java_util_concurrent_locks_AbstractOwnableSynchronizer::initialize(JavaThread::current());
>>
>>
>>
>> but we don't check if the class actually was successfully loaded! We may
>> have an exception pending due to OOME for example. Because the prologue
>> returns true, the VMOp is posted for the VMThread to execute and when
>> doit() accesses the class that was presumed loaded by the prologue we
>> get NULL and hit the assertion.
>>
>> Simple fix is to just return false if an exception is pending.
>>
>> Testing: jprt, tmtools tests (in progress)
>
> Strike the tmtools part - they don't even seem to run the test that was
> failing any more.
>
> David
>
>
>> Thanks,
>> David
More information about the hotspot-runtime-dev
mailing list