We were running some jck tests with -Xcomp -XX:-TieredCompilation:
api/java_lang/constant/DynamicConstantDesc
api/java_lang/invoke/ConstantBootstraps
api/java_lang/invoke/MethodHandle
api/java_lang/reflect/Constructor/typeanno/getannotatedparametertypes
5 tests crashed with SIGSEGV in StubRoutines::generic_arraycopy.
Root cause is a register clash in debug build:
generate_generic_copy:
rscratch2_dst_klass = rscratch2 = r9
It uses
MacroAssembler::check_klass_subtype_slow_path
which overwrites rscratch2 in debug build.
Reproducible as follows:
export JAVA_HOME=<your jdk13>
export JAVA_OPTS="-Xcomp -XX:-TieredCompilation"
ksh <your directory>/jck/jck13/JCK-runtime-13/tests/api/java_lang/constant/DynamicConstantDesc/OfCanonical.ksh
api/java_lang/constant/DynamicConstantDesc
api/java_lang/invoke/ConstantBootstraps
api/java_lang/invoke/MethodHandle
api/java_lang/reflect/Constructor/typeanno/getannotatedparametertypes
5 tests crashed with SIGSEGV in StubRoutines::generic_arraycopy.
Root cause is a register clash in debug build:
generate_generic_copy:
rscratch2_dst_klass = rscratch2 = r9
It uses
MacroAssembler::check_klass_subtype_slow_path
which overwrites rscratch2 in debug build.
Reproducible as follows:
export JAVA_HOME=<your jdk13>
export JAVA_OPTS="-Xcomp -XX:-TieredCompilation"
ksh <your directory>/jck/jck13/JCK-runtime-13/tests/api/java_lang/constant/DynamicConstantDesc/OfCanonical.ksh
- duplicates
-
JDK-8219006 AArch64: Register corruption in slow subtype check
- Resolved