Note: Title should be updated once the root cause is known
The test
runtime/cds/appcds/methodHandles/MethodHandlesSpreadArgumentsTest.java#aot
intermittnetly segfaults in C2 compiled code when additionally run with
-XX:+UseZGC -XX:+UseCompactObjectHeaders
on linux-aarch64 and linux-aarch64-debug (could not trigger on linux-x64). It starts to show up after JDK-8371643.
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x0000ffff93ec4678, pid=3310476, tid=3310479
#
# JRE version: Java(TM) SE Runtime Environment (26.0+27) (build 26-ea+27-2662)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (26-ea+27-2662, mixed mode, sharing, tiered, compact obj headers, z gc, linux-aarch64)
# Problematic frame:
# J 1303 c2 java.lang.invoke.LambdaFormEditor.getInCache(Ljava/lang/invoke/LambdaFormEditor$TransformKey;)Ljava/lang/invoke/LambdaForm; java.base@26-ea (165 bytes) @ 0x0000ffff93ec4678 [0x0000ffff93ec4340+0x0000000000000338]
...........
Command Line: -XX:MaxRAMPercentage=6.25 -Dtest.boot.jdk=/opt/mach5/mesos/work_dir/jib-master/install/jdk/25/37/bundles/linux-aarch64/jdk-25_linux-aarch64_bin.tar.gz/jdk-25 -Djava.io.tmpdir=/opt/mach5/mesos/work_dir/slaves/da1065b5-7b94-4f0d-85e9-a3a252b9a32e-S11684/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/6f5a62ae-0e93-424d-b47b-37fb2d854894/runs/4b32f232-6395-4e83-a5b1-a5ab90ffde2b/testoutput/test-support/jtreg_open_test_hotspot_jtreg_hotspot_runtime/tmp -XX:+UseZGC -XX:+UseCompactObjectHeaders -Xlog:class+load,cds=debug -Xlog:arguments,aot,cds:file=MethodHandlesSpreadArgumentsTest.production.log::filesize=0 -XX:AOTMode=on -XX:AOTCache=MethodHandlesSpreadArgumentsTest.aot TestMHApp test.java.lang.invoke.MethodHandlesSpreadArgumentsTest
..........
Current thread (0x0000ffffa40caed0): JavaThread "main" [_thread_in_Java, id=3310479, stack(0x0000ffffaaf0f000,0x0000ffffab10d000) (2040K)]
Stack: [0x0000ffffaaf0f000,0x0000ffffab10d000], sp=0x0000ffffab10aa20, free space=2030k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
J 1303 c2 java.lang.invoke.LambdaFormEditor.getInCache(Ljava/lang/invoke/LambdaFormEditor$TransformKey;)Ljava/lang/invoke/LambdaForm; java.base@26-ea (165 bytes) @ 0x0000ffff93ec4678 [0x0000ffff93ec4340+0x0000000000000338]
J 886 c1 java.lang.invoke.LambdaFormEditor.spreadArgumentsForm(ILjava/lang/Class;I)Ljava/lang/invoke/LambdaForm; java.base@26-ea (363 bytes) @ 0x0000ffff8c3ec804 [0x0000ffff8c3ec640+0x00000000000001c4]
J 1532 c2 java.lang.invoke.MethodHandle.asSpreader(ILjava/lang/Class;I)Ljava/lang/invoke/MethodHandle; java.base@26-ea (68 bytes) @ 0x0000ffff93f3953c [0x0000ffff93f392c0+0x000000000000027c]
J 1010 c1 test.java.lang.invoke.MethodHandlesSpreadArgumentsTest.testSpreadArguments(Ljava/lang/Class;Ljava/lang/Class;II)V (274 bytes) @ 0x0000ffff8c4489d4 [0x0000ffff8c448540+0x0000000000000494]
j test.java.lang.invoke.MethodHandlesSpreadArgumentsTest.testSpreadArguments0()V+186
j test.java.lang.invoke.MethodHandlesSpreadArgumentsTest$$Lambda+0x800000025.run()V+4
j test.java.lang.invoke.lib.CodeCacheOverflowProcessor$$Lambda+0x80000002a.run()V+4
j jdk.test.lib.Utils.filterException(Ljdk/test/lib/Utils$ThrowingRunnable;Ljava/util/function/Function;)Ljava/lang/Throwable;+1
j test.java.lang.invoke.lib.CodeCacheOverflowProcessor.runMHTest(Ljdk/test/lib/Utils$ThrowingRunnable;)Ljava/lang/Throwable;+16
j test.java.lang.invoke.MethodHandlesSpreadArgumentsTest.testSpreadArguments()V+6
j java.lang.invoke.LambdaForm$DMH+0x800000024.invokeVirtual(Ljava/lang/Object;Ljava/lang/Object;)V+10 java.base@26-ea
j java.lang.invoke.LambdaForm$MH+0x000007fe01041000.invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+31 java.base@26-ea
j java.lang.invoke.Invokers$Holder.invokeExact_MT(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;+19 java.base@26-ea
j jdk.internal.reflect.DirectMethodHandleAccessor.invokeImpl(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+41 java.base@26-ea
j jdk.internal.reflect.DirectMethodHandleAccessor.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+23 java.base@26-ea
j java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;+102 java.base@26-ea
j TestMHApp.main([Ljava/lang/String;)V+194
v ~StubRoutines::Stub Generator call_stub_stub 0x0000ffff9388e444
V [libjvm.so+0x8856a4] JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, JavaThread*)+0x238 (javaCalls.cpp:416)
V [libjvm.so+0x93dcd8] jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, JavaThread*) [clone .constprop.1]+0x238 (jni.cpp:881)
V [libjvm.so+0x93ff64] jni_CallStaticVoidMethod+0xe4 (jni.cpp:1710)
C [libjli.so+0x3c60] invokeStaticMainWithArgs+0x58 (java.c:392)
C [libjli.so+0x4cb0] JavaMain+0xe30 (java.c:640)
C [libjli.so+0x7d2c] ThreadJavaMain+0xc (java_md.c:646)
C [libpthread.so.0+0x7950] start_thread+0x190
siginfo: si_signo: 11 (SIGSEGV), si_code: 2 (SEGV_ACCERR), si_addr: 0x000004000c600000