From efa8e575c84754fb022a85debad029731918da9d Mon Sep 17 00:00:00 2001 From: sla Date: Wed, 8 Jan 2014 08:34:02 +0100 Subject: [PATCH] 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 --- src/share/vm/classfile/classFileParser.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/share/vm/classfile/classFileParser.cpp b/src/share/vm/classfile/classFileParser.cpp index ea817cdd4..e1d699872 100644 --- a/src/share/vm/classfile/classFileParser.cpp +++ b/src/share/vm/classfile/classFileParser.cpp @@ -4165,8 +4165,12 @@ instanceKlassHandle ClassFileParser::parseClassFile(Symbol* name, 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()); -- GitLab