Could you please review following fix which update implementation of 
Klass::external_name for anonymous classes.
Previously external_name tried to add hashcode of corresponding java_mirror for 
InstanceKlass if it exists. However the java_mirror could be incorrect during 
GC. Also external_name might tries to calculate hash_code if it was not 
“pre-calculated” during class verification. See JDK-8197442 
<https://bugs.openjdk.java.net/browse/JDK-8197442> [Graal] 
runtime/Metaspace/DefineClass.java crashes with "biases should not be seen by 
VM thread here"

The suggested fix is to  print address of corresponding InstanceKlass instead 
of hashcode. It allows to identify anonymous classes and allows to use 
external_name at any time. The hashcode for java_mirror is still pre-calculated 
in verifier.cpp since ik->java_mirror()->identity_hash()  still might be used 
during safepoint. As a regression test I updated one of tests which redefine 
classes and easily reproduce problem when executed with full logging enabled. 
Test java/lang/StackWalker/VerifyStackTrace.java is update to match new pattern.

webrev: http://cr.openjdk.java.net/~lmesnik/8197901/webrev.00/ 
bug: https://bugs.openjdk.java.net/browse/JDK-8197901 


Reply via email to