RFR: 8197901: Crash during GC when logging level is debug
leonid.mesnik at oracle.com
Fri Feb 23 02:41:08 UTC 2018
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/ <http://cr.openjdk.java.net/~lmesnik/8197901/webrev.00/>
bug: https://bugs.openjdk.java.net/browse/JDK-8197901 <https://bugs.openjdk.java.net/browse/JDK-8197901>
More information about the core-libs-dev