# HG changeset patch # User sla # Date 1389166442 -3600 # Node ID 8e15758b2e94e80c3356b933a690284934ef6892 # Parent 03ca22ba9cf579087a23980245a939a4d80b8a9f 8031376: TraceClassLoading expects there to be a (Java) caller when you load a class with the bootstrap class loader Reviewed-by: sla, dholmes Contributed-by: jeremymanson@google.com diff -r 03ca22ba9cf5 -r 8e15758b2e94 src/share/vm/classfile/classFileParser.cpp --- a/src/share/vm/classfile/classFileParser.cpp Tue Oct 21 21:39:14 2014 -0400 +++ b/src/share/vm/classfile/classFileParser.cpp Wed Jan 08 08:34:02 2014 +0100 @@ -4165,8 +4165,12 @@ tty->print("[Loaded %s from %s]\n", this_klass->external_name(), cfs->source()); } else if (class_loader.is_null()) { - if (THREAD->is_Java_thread()) { - Klass* caller = ((JavaThread*)THREAD)->security_get_caller_class(1); + Klass* caller = + THREAD->is_Java_thread() + ? ((JavaThread*)THREAD)->security_get_caller_class(1) + : NULL; + // caller can be NULL, for example, during a JVMTI VM_Init hook + if (caller != NULL) { tty->print("[Loaded %s by instance of %s]\n", this_klass->external_name(), InstanceKlass::cast(caller)->external_name());