openj9
openj9 copied to clipboard
jdk_lang_j9_1 java/lang/Thread/virtual/Parking.java#Xcomp-noTieredCompilation Segmentation error vmState=0x00000000
Failure link
https://openj9-jenkins.osuosl.org/job/Test_openjdk24_j9_sanity.openjdk_s390x_linux_Nightly_testList_2/88/consoleFull
00:25:22 openjdk version "24.0.1-internal" 2025-04-15
00:25:22 OpenJDK Runtime Environment (build 24.0.1-internal-adhoc.jenkins.BuildJDK24s390xlinuxNightly)
00:25:22 Eclipse OpenJ9 VM (build master-6404875e5b0, JRE 24 Linux s390x-64-Bit Compressed References 20250529_92 (JIT enabled, AOT enabled)
00:25:22 OpenJ9 - 6404875e5b0
00:25:22 OMR - b2185f3428a
00:25:22 JCL - 29f868425a0 based on jdk-24.0.1+9)
Rerun in Grinder - Change TARGET to run only the failed test targets.
Optional info
Failure output (captured from console output)
00:25:23 Running test jdk_lang_j9_1 ...
00:25:23 variation: -Xdump:system:none -Xdump:heap:none -Xdump:system:events=gpf+abort+traceassert+corruptcache -XX:-JITServerTechPreviewMessage Mode501 -XXgc:fvtest_forceCopyForwardHybridMarkCompactRatio=10
00:25:23 JVM_OPTIONS: -Xdump:system:none -Xdump:heap:none -Xdump:system:events=gpf+abort+traceassert+corruptcache -XX:-JITServerTechPreviewMessage -Xjit -Xgcpolicy:balanced -Xnocompressedrefs -XXgc:fvtest_forceCopyForwardHybridMarkCompactRatio=10 -Xverbosegclog
01:01:58 TEST: java/lang/Thread/virtual/Parking.java#Xcomp-noTieredCompilation
01:01:58 STARTED Parking::testParkNanos10 'testParkNanos10()'
01:01:58 Unhandled exception
01:01:58 Type=Segmentation error vmState=0x00000000
01:01:58 J9Generic_Signal_Number=00000018 Signal_Number=0000000b Error_Value=00000000 Signal_Code=00000002
01:01:58 Handler1=000003FFA40C70F8 Handler2=000003FF9FF30978 InaccessibleAddress=000003FF20541000
Module=/home/jenkins/workspace/Test_openjdk24_j9_sanity.openjdk_s390x_linux_Nightly_testList_2/jdkbinary/j2sdk-image/lib/default/libjclse29.so
01:01:58 Module_base_address=000003FF9D680000 Symbol=Java_java_lang_Thread_interruptImpl
01:01:58 Symbol_address=000003FF9D6D0408
01:01:58 Target=2_90_20250529_92 (Linux 5.4.0-181-generic)
01:01:58 CPU=s390x (4 logical CPUs) (0x1f58f2000 RAM)
01:01:58 ----------- Stack Backtrace -----------
01:01:58 Java_java_lang_Thread_interruptImpl+0x78 (0x000003FF9D6D0480 [libjclse29.so+0x50480])
01:01:58 (0x000003FEB2C12F92 [<unknown>+0x0])
01:01:58 ---------------------------------------
50x grinder - https://openj9-jenkins.osuosl.org/job/Grinder/4364/ - one failure was reproduced
https://openj9-jenkins.osuosl.org/job/Test_openjdk24_j9_sanity.openjdk_s390x_linux_Nightly_testList_1/89/consoleFull
The crash occurs because a corrupt thread object is passed into Java_java_lang_Thread_interruptImpl
The Java stack shows
> !stackslots 0x3ff0448f900
<3ff0448f900> *** BEGIN STACK WALK, flags = 00400001 walkThread = 4,393,823,435,008 ***
<3ff0448f900> ITERATE_O_SLOTS
<3ff0448f900> RECORD_BYTECODE_PC_OFFSET
<3ff0448f900> Initial values: walkSP = 0x000003FEF4016138, PC = 0x0000000000000006, literals = 0x0000000000000000, A0 = 0x000003FEF40161B8, j2iFrame = 0x0000000000000000, decomp = 0x0000000000000000
<3ff0448f900> JIT JNI call-out frame: bp = 0x000003FEF4016158, sp = 0x000003FEF4016138, pc = 0x0000000000000006, cp = 0x000003FFA02B9BA0, arg0EA = 0x000003FEF40161B8, flags = 0x0000000020000000
<3ff0448f900> Method: java/lang/Thread.interruptImpl()V !j9method 0x000003FFA02B9A38
<3ff0448f900> JIT frame: bp = 0x000003FEF40161B0, pc = 0x000003FF63E79592, unwindSP = 0x000003FEF4016160, cp = 0x000003FFA02B9BA0, arg0EA = 0x000003FEF40161B8, jitInfo = 0x000003FF60087F08
<3ff0448f900> Method: java/lang/Thread.interruptImpl()V !j9method 0x000003FFA02B9A38
<3ff0448f900> Bytecode index = -1, inlineDepth = 0, PC offset = 0x000000000000008E
<3ff0448f900> stackMap=0x000003FF60088009, slots=I16(0x0001) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0001), localBaseOffset=I16(0x0000)
<3ff0448f900> Described JIT args starting at 0x000003FEF40161B8 for U16(0x0001) slots
<3ff0448f900> O-Slot: : a0[0x000003FEF40161B8] = 0x000003FF80010000 //corrupt thread object slot
<3ff0448f900> Described JIT temps starting at 0x000003FEF40161B0 for IDATA(0x0000000000000000) slots
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000000)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016168] = UDATA(0x000003FF9D838268) (jit_r6)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016170] = UDATA(0x000003FFA027BD00) (jit_r7)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016178] = UDATA(0x000003FFA0593A00) (jit_r8)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016180] = UDATA(0x000003FF80010000) (jit_r9)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016188] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016190] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016198] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT frame: bp = 0x000003FEF4016218, pc = 0x000003FF63E77A64, unwindSP = 0x000003FEF40161B8, cp = 0x000003FFA02B9BA0, arg0EA = 0x000003FEF4016220, jitInfo = 0x000003FF60086F88
<3ff0448f900> Method: java/lang/Thread.interrupt0()V !j9method 0x000003FFA02B9998
<3ff0448f900> Bytecode index = 8, inlineDepth = 0, PC offset = 0x000000000000006A
<3ff0448f900> stackMap=0x000003FF600870D0, slots=I16(0x0001) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0001), localBaseOffset=I16(0xFFE8)
<3ff0448f900> Described JIT args starting at 0x000003FEF4016220 for U16(0x0001) slots
<3ff0448f900> O-Slot: : a0[0x000003FEF4016220] = 0x000003FF9D838118 //valid thread object slot
<3ff0448f900> Described JIT temps starting at 0x000003FEF4016200 for IDATA(0x0000000000000003) slots
<3ff0448f900> I-Slot: : t2[0x000003FEF4016200] = 0x0000000163E669C2
<3ff0448f900> O-Slot: : t1[0x000003FEF4016208] = 0x000003FF9D838268
<3ff0448f900> O-Slot: : t0[0x000003FEF4016210] = 0x000003FF9D838268
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000040)
<3ff0448f900> JIT-RegisterMap-O-Slot[0x000003FEF4016168] = 0x000003FF9D838268 (jit_r6)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016170] = UDATA(0x000003FFA027BD00) (jit_r7)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016178] = UDATA(0x000003FFA0593A00) (jit_r8)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016180] = UDATA(0x000003FF80010000) (jit_r9)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016188] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016190] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016198] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161C0] = UDATA(0x000003FF9DA778C0) (jit_r6)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161C8] = UDATA(0x000003FF9DA778C0) (jit_r7)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161D0] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161D8] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161E0] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161E8] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016198] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT frame: bp = 0x000003FEF4016238, pc = 0x000003FF63EAAE30, unwindSP = 0x000003FEF4016220, cp = 0x000003FFA02B9BA0, arg0EA = 0x000003FEF4016240, jitInfo = 0x000003FF600A45C8
<3ff0448f900> Method: java/lang/Thread.setInterrupt()V !j9method 0x000003FFA02B92F8
<3ff0448f900> Bytecode index = 13, inlineDepth = 0, PC offset = 0x0000000000000036
<3ff0448f900> stackMap=0x000003FF600A46C9, slots=I16(0x0001) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0001), localBaseOffset=I16(0x0000)
<3ff0448f900> Described JIT args starting at 0x000003FEF4016240 for U16(0x0001) slots
<3ff0448f900> I-Slot: : a0[0x000003FEF4016240] = 0x000003FF9DA72B28
<3ff0448f900> Described JIT temps starting at 0x000003FEF4016238 for IDATA(0x0000000000000000) slots
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000000)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161C0] = UDATA(0x000003FF9DA778C0) (jit_r6)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161C8] = UDATA(0x000003FF9DA778C0) (jit_r7)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161D0] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161D8] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161E0] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40161E8] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016198] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT frame: bp = 0x000003FEF40162B8, pc = 0x000003FF63EAA22C, unwindSP = 0x000003FEF4016240, cp = 0x000003FFA02D7AE0, arg0EA = 0x000003FEF40162C0, jitInfo = 0x000003FF600A4088
<3ff0448f900> Method: java/lang/VirtualThread.interrupt()V !j9method 0x000003FFA02D91D0
<3ff0448f900> Bytecode index = 137, inlineDepth = 0, PC offset = 0x0000000000000232
<3ff0448f900> stackMap=0x000003FF600A428E, slots=I16(0x0001) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0001), localBaseOffset=I16(0xFFE8)
<3ff0448f900> Described JIT args starting at 0x000003FEF40162C0 for U16(0x0001) slots
<3ff0448f900> O-Slot: : a0[0x000003FEF40162C0] = 0x000003FF9DA778C0
<3ff0448f900> Described JIT temps starting at 0x000003FEF40162A0 for IDATA(0x0000000000000003) slots
<3ff0448f900> I-Slot: : t2[0x000003FEF40162A0] = 0x000003FF7DB58890
<3ff0448f900> I-Slot: : t1[0x000003FEF40162A8] = 0x000003FF63E66054
<3ff0448f900> I-Slot: : t0[0x000003FEF40162B0] = 0x0000000100000000
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000040)
<3ff0448f900> JIT-RegisterMap-O-Slot[0x000003FEF40161C0] = 0x000003FF9DA778C0 (jit_r6)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF40161C8] = UDATA(0x000003FF9DA778C0) (jit_r7)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF40161D0] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF40161D8] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF40161E0] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF40161E8] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016198] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016258] = UDATA(0x000003FF9DA778C0) (jit_r6)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016260] = UDATA(0x000003FF9DA778C0) (jit_r7)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016268] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016270] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016278] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016280] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016288] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT frame: bp = 0x000003FEF4016328, pc = 0x000003FF63FA293C, unwindSP = 0x000003FEF40162C0, cp = 0x000003FFA05FC400, arg0EA = 0x000003FEF4016328, jitInfo = 0x000003FF60129E08
<3ff0448f900> Method: Parking.lambda$testPark10$0()V !j9method 0x000003FFA05FD258
<3ff0448f900> Bytecode index = 5, inlineDepth = 0, PC offset = 0x000000000000003C
<3ff0448f900> stackMap=0x000003FF60129F42, slots=I16(0x0000) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0000), localBaseOffset=I16(0xFFE8)
<3ff0448f900> Described JIT temps starting at 0x000003FEF4016310 for IDATA(0x0000000000000003) slots
<3ff0448f900> I-Slot: : t2[0x000003FEF4016310] = 0x0000000040000000
<3ff0448f900> I-Slot: : t1[0x000003FEF4016318] = 0x000003FF63FA2124
<3ff0448f900> I-Slot: : t0[0x000003FEF4016320] = 0x000003FF63FA2124
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000080)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016258] = UDATA(0x000003FF9DA778C0) (jit_r6)
<3ff0448f900> JIT-RegisterMap-O-Slot[0x000003FEF4016260] = 0x000003FF9DA778C0 (jit_r7)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016268] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016270] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016278] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016280] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016288] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162D8] = UDATA(0x0000000000000000) (jit_r6)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162E0] = UDATA(0x000003FF044E6D00) (jit_r7)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162E8] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162F0] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016278] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016280] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016288] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT frame: bp = 0x000003FEF4016340, pc = 0x000003FF63FA2124, unwindSP = 0x000003FEF4016330, cp = 0x000003FF044E6BD0, arg0EA = 0x000003FEF4016348, jitInfo = 0x000003FF60129A48
<3ff0448f900> Method: Parking$$Lambda/0x00000000044a7188.run()V !j9method 0x000003FF044E6C48
<3ff0448f900> Bytecode index = 0, inlineDepth = 0, PC offset = 0x000000000000002A
<3ff0448f900> stackMap=0x000003FF60129B49, slots=I16(0x0001) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0001), localBaseOffset=I16(0x0000)
<3ff0448f900> Described JIT args starting at 0x000003FEF4016348 for U16(0x0001) slots
<3ff0448f900> O-Slot: : a0[0x000003FEF4016348] = 0x000003FF9DA77650
<3ff0448f900> Described JIT temps starting at 0x000003FEF4016340 for IDATA(0x0000000000000000) slots
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000000)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162D8] = UDATA(0x0000000000000000) (jit_r6)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162E0] = UDATA(0x000003FF044E6D00) (jit_r7)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162E8] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162F0] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016278] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016280] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016288] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT frame: bp = 0x000003FEF4016388, pc = 0x000003FF63EA957E, unwindSP = 0x000003FEF4016348, cp = 0x000003FF044C3A60, arg0EA = 0x000003FEF4016398, jitInfo = 0x000003FF600A37C8
<3ff0448f900> Method: jdk/test/lib/thread/VThreadRunner.lambda$run$0(Ljdk/test/lib/thread/VThreadRunner$ThrowingRunnable;Ljava/util/concurrent/atomic/AtomicReference;)V !j9method 0x000003FF044C40A0
<3ff0448f900> Bytecode index = 3, inlineDepth = 0, PC offset = 0x000000000000008A
<3ff0448f900> stackMap=0x000003FF600A38E0, slots=I16(0x0002) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0002), localBaseOffset=I16(0xFFF0)
<3ff0448f900> Described JIT args starting at 0x000003FEF4016390 for U16(0x0002) slots
<3ff0448f900> O-Slot: : a1[0x000003FEF4016390] = 0x000003FF9DA77850
<3ff0448f900> I-Slot: : a0[0x000003FEF4016398] = 0x0000000020000000
<3ff0448f900> Described JIT temps starting at 0x000003FEF4016378 for IDATA(0x0000000000000002) slots
<3ff0448f900> I-Slot: : t1[0x000003FEF4016378] = 0x000003FF9DA72B18
<3ff0448f900> I-Slot: : t0[0x000003FEF4016380] = 0x000003FF63F9FF34
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000000)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016358] = UDATA(0x000003FF7DB047E8) (jit_r6)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016360] = UDATA(0x000003FF63EA9300) (jit_r7)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162E8] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162F0] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016278] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016280] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016288] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT frame: bp = 0x000003FEF40163B0, pc = 0x000003FF63EA932C, unwindSP = 0x000003FEF4016390, cp = 0x000003FF044C42C0, arg0EA = 0x000003FEF40163B8, jitInfo = 0x000003FF600A3688
<3ff0448f900> Method: jdk/test/lib/thread/VThreadRunner$$Lambda/0x00000000044a58e8.run()V !j9method 0x000003FF044C4368
<3ff0448f900> Bytecode index = 8, inlineDepth = 0, PC offset = 0x0000000000000032
<3ff0448f900> stackMap=0x000003FF600A3789, slots=I16(0x0001) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0001), localBaseOffset=I16(0x0000)
<3ff0448f900> Described JIT args starting at 0x000003FEF40163B8 for U16(0x0001) slots
<3ff0448f900> I-Slot: : a0[0x000003FEF40163B8] = 0x000003FF9DA80DB0
<3ff0448f900> Described JIT temps starting at 0x000003FEF40163B0 for IDATA(0x0000000000000000) slots
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000000)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016358] = UDATA(0x000003FF7DB047E8) (jit_r6)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016360] = UDATA(0x000003FF63EA9300) (jit_r7)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162E8] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF40162F0] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016278] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016280] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-Frame-RegisterMap[0x000003FEF4016288] = UDATA(0x000003FF63F2EA88) (jit_r12)
<3ff0448f900> JIT frame: bp = 0x000003FEF4016420, pc = 0x000003FF63F2EA66, unwindSP = 0x000003FEF40163B8, cp = 0x000003FFA02B9BA0, arg0EA = 0x000003FEF4016438, jitInfo = 0x000003FF600E81C8
<3ff0448f900> Method: java/lang/Thread.runWith(Ljava/lang/Object;Ljava/lang/Runnable;)V !j9method 0x000003FFA02B9218
<3ff0448f900> Bytecode index = 7, inlineDepth = 0, PC offset = 0x0000000000000178
<3ff0448f900> stackMap=0x000003FF600E82E7, slots=I16(0x0003) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0003), localBaseOffset=I16(0xFFF0)
<3ff0448f900> Described JIT args starting at 0x000003FEF4016428 for U16(0x0003) slots
<3ff0448f900> I-Slot: : a2[0x000003FEF4016428] = 0x000003FF9DA77A48
<3ff0448f900> O-Slot: : a1[0x000003FEF4016430] = 0x000003FF7DB047E8
<3ff0448f900> O-Slot: : a0[0x000003FEF4016438] = 0x000003FF9DA778C0
<3ff0448f900> Described JIT temps starting at 0x000003FEF4016410 for IDATA(0x0000000000000002) slots
<3ff0448f900> I-Slot: : t1[0x000003FEF4016410] = 0x000003FF9DA77868
<3ff0448f900> I-Slot: : t0[0x000003FEF4016418] = 0x000003FF7DB047E8
<3ff0448f900> JIT-RegisterMap = UDATA(0x0000000000000040)
<3ff0448f900> JIT-RegisterMap-O-Slot[0x000003FEF4016358] = 0x000003FF7DB047E8 (jit_r6)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016360] = UDATA(0x000003FF63EA9300) (jit_r7)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF40162E8] = UDATA(0x000003FF044C4100) (jit_r8)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF40162F0] = UDATA(0x000003FFA0304A00) (jit_r9)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016278] = UDATA(0x000003FF9D836DC0) (jit_r10)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016280] = UDATA(0x0000000000000000) (jit_r11)
<3ff0448f900> JIT-RegisterMap-I-Slot[0x000003FEF4016288] = UDATA(0x000003FF63F2EA88) (jit_r12)
In the java/lang/Thread.interrupt0()V frame the thread object is valid
> !j9object 0x000003FF9D838118
!J9Object 0x000003FF9D838118 {
struct J9Class* clazz = !j9class 0x3FF04483300 // jdk/internal/misc/CarrierThread
Object flags = 0x0000000A;
J lockword = 0x0000000000000000 (offset = 0) (java/lang/Object) <hidden>
J eetop = 0x000003FF0448F900 (offset = 8) (java/lang/Thread)
J tid = 0x0000000000000020 (offset = 16) (java/lang/Thread)
Ljava/lang/String; name = !fj9object 0x3ff9d838248 (offset = 48) (java/lang/Thread)
Z interrupted = 0x00000001 (offset = 152) (java/lang/Thread)
Ljava/lang/ClassLoader; contextClassLoader = !fj9object 0x3ff7db581f8 (offset = 56) (java/lang/Thread)
Ljava/lang/Thread$FieldHolder; holder = !fj9object 0x3ff9d838278 (offset = 64) (java/lang/Thread)
Ljava/lang/ThreadLocal$ThreadLocalMap; threadLocals = !fj9object 0x0 (offset = 72) (java/lang/Thread)
Ljava/lang/ThreadLocal$ThreadLocalMap; inheritableThreadLocals = !fj9object 0x0 (offset = 80) (java/lang/Thread)
Ljava/lang/Object; scopedValueBindings = !fj9object 0x3ff7db047e8 (offset = 88) (java/lang/Thread)
Ljava/lang/Object; interruptLock = !fj9object 0x3ff9d838268 (offset = 96) (java/lang/Thread)
Ljava/lang/Object; parkBlocker = !fj9object 0x0 (offset = 104) (java/lang/Thread)
Lsun/nio/ch/Interruptible; nioBlocker = !fj9object 0x0 (offset = 112) (java/lang/Thread)
Ljdk/internal/vm/Continuation; cont = !fj9object 0x3ff9da779e8 (offset = 120) (java/lang/Thread)
Ljava/lang/Thread$UncaughtExceptionHandler; uncaughtExceptionHandler = !fj9object 0x3ff9d80df10 (offset = 128) (java/lang/Thread)
J threadLocalRandomSeed = 0xB7F672F50FCBC878 (offset = 24) (java/lang/Thread)
I threadLocalRandomProbe = 0x3C6EF372 (offset = 156) (java/lang/Thread)
I threadLocalRandomSecondarySeed = 0x00000000 (offset = 160) (java/lang/Thread)
Ljdk/internal/vm/ThreadContainer; container = !fj9object 0x3ff9d80df20 (offset = 136) (java/lang/Thread)
Ljdk/internal/vm/StackableScope; headStackableScopes = !fj9object 0x0 (offset = 144) (java/lang/Thread)
Z started = 0x00000001 (offset = 164) (java/lang/Thread)
J tls = 0x0000000000000000 (offset = 40) (java/lang/Thread) <hidden>
J internalSuspendState = 0x0000000000000000 (offset = 32) (java/lang/Thread) <hidden>
Ljava/util/concurrent/ForkJoinPool; pool = !fj9object 0x3ff9d7d1858 (offset = 168) (java/util/concurrent/ForkJoinWorkerThread)
Ljava/util/concurrent/ForkJoinPool$WorkQueue; workQueue = !fj9object 0x3ff9d8382b0 (offset = 176) (java/util/concurrent/ForkJoinWorkerThread)
I compensating = 0x00000000 (offset = 192) (jdk/internal/misc/CarrierThread)
J compensateValue = 0x0000000000000000 (offset = 184) (jdk/internal/misc/CarrierThread)
}
However in the java/lang/Thread.interruptImpl()V it inexplicably changes to 0x000003FF80010000 which is not a valid object address.
Given that interruptImpl() is simply doing the following, my guess is that there is an issue in how it is compiled.
private void interrupt0() {
synchronized (interruptLock) {
interruptImpl();
}
}
@hzongaro Please take a look
@r30shah, could someone on your team take a look at this? Is it possible that there is a problem in how the call to the native Thread.interruptImpl method is ~step~ set up?
@dchopra001 Can you take a look at this failure?
@dchopra001 any update on this one ?
@dchopra001 any update on this one ?
I'm unable to reproduce this locally so far, so still working on that. Will update once I have a local repro.
Launched a grinder here to reproduce and get a core: https://openj9-jenkins.osuosl.org/job/Grinder/4413/
Trying to reproduce locally doesn't reproduce the failure unfortunately:
jdk-24.0.1+9/bin/java -Xcomp -XX:-TieredCompilation --add-exports=java.base/com.ibm.oti.vm=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --enable-native-access=ALL-UNNAMED -Djava.library.path=/home/seeluser/dchopra/22047/virtual -jar junit-platform-console-standalone-1.9.3.jar --class-path junit-jupiter-api-5.13.0.jar:/home/rahil/22047/openj9-openjdk-jdk24/test/lib:junit-jupiter-params-5.12.2.jar:. --select-class Parking
Thanks for using JUnit! Support its development at https://junit.org/sponsoring
╷
├─ JUnit Jupiter ✔
│ └─ Parking ✔
│ ├─ testParkWhenHoldingMonitor(boolean) ✔
│ │ ├─ [1] true ✔
│ │ └─ [2] false ✔
│ ├─ testPark1() ✔
│ ├─ testPark2() ✔
│ ├─ testPark3() ✔
│ ├─ testPark4() ✔
│ ├─ testPark5() ✔
│ ├─ testPark6() ✔
│ ├─ testPark7() ✔
│ ├─ testPark8() ✔
│ ├─ testPark9() ✔
│ ├─ testParkNanos10() ✔
│ ├─ testParkNanos11() ✔
│ ├─ testParkNanos1() ✔
│ ├─ testParkNanos2() ✔
│ ├─ testParkNanos3() ✔
│ ├─ testParkNanos4() ✔
│ ├─ testParkNanos5() ✔
│ ├─ testParkNanos6() ✔
│ ├─ testParkNanos7() ✔
│ ├─ testParkNanos8() ✔
│ ├─ testParkNanos9() ✔
│ ├─ testManyParkedWhenHoldingMonitor() ✔
│ ├─ testPark10() ✔
│ └─ testPark11() ✔
├─ JUnit Vintage ✔
└─ JUnit Platform Suite ✔
Test run finished after 12771 ms
[ 5 containers found ]
[ 0 containers skipped ]
[ 5 containers started ]
[ 0 containers aborted ]
[ 5 containers successful ]
[ 0 containers failed ]
[ 25 tests found ]
[ 0 tests skipped ]
[ 25 tests started ]
[ 0 tests aborted ]
[ 25 tests successful ]
[ 0 tests failed ]
I tried running ~20 times with no failures.
disabled test - java/lang/Thread/virtual/MonitorWaitNotify.java
17:35:19 openjdk version "24.0.1-beta" 2025-04-15
17:35:19 IBM Semeru Runtime Open Edition 24.0.1+9-202506170132 (build 24.0.1-beta+9-202506170132)
17:35:19 Eclipse OpenJ9 VM 24.0.1+9-202506170132 (build master-cf3179c911, JRE 24 Linux s390x-64-Bit Compressed References 20250617_84 (JIT enabled, AOT enabled)
17:35:19 OpenJ9 - cf3179c911
17:35:19 OMR - 6873ddb55
17:35:19 JCL - 9e7e1c82d based on jdk-24.0.1+9)
17:46:28 Running test jdk_lang_0 ...
17:46:28 variation: -Xdump:system:none -Xdump:heap:none -Xdump:system:events=gpf+abort+traceassert+corruptcache -XX:-JITServerTechPreviewMessage Mode150
17:46:28 JVM_OPTIONS: -Xdump:system:none -Xdump:heap:none -Xdump:system:events=gpf+abort+traceassert+corruptcache -XX:-JITServerTechPreviewMessage -XX:+UseCompressedOops -Xverbosegclog
20:35:03 TEST: java/lang/Thread/virtual/MonitorWaitNotify.java#Xcomp-LM_LIGHTWEIGHT
20:35:03 STARTED MonitorWaitNotify::testWaitWithInterruptSet '[2] 30000'
20:35:03 Unhandled exception
20:35:03 Type=Segmentation error vmState=0x00000000
20:35:03 ----------- Stack Backtrace -----------
20:35:03 Java_java_lang_Thread_interruptImpl+0x78 (0x000003FF8CBD0140 [libjclse29.so+0x50140])
20:35:03 (0x000003FE9E059292 [<unknown>+0x0])
20:35:03 ---------------------------------------
20:35:54 TEST: java/lang/Thread/virtual/MonitorWaitNotify.java#Xcomp-noTieredCompilation-LM_LEGACY
20:35:54 STARTED MonitorWaitNotify::testWaitWithInterruptSet '[2] 30000'
20:35:54 Module=/home/jenkins/workspace/Grinder/jdkbinary/j2sdk-image/lib/default/libjclse29.so
20:35:54 Module_base_address=000003FFB4500000 Symbol=Java_java_lang_Thread_interruptImpl
20:35:54 Symbol_address=000003FFB45500C8
20:35:54 Target=2_90_20250617_84 (Linux 5.15.0-140-generic)
20:35:54 CPU=s390x (4 logical CPUs) (0x1f5c03000 RAM)
20:35:54 ----------- Stack Backtrace -----------
20:35:54 Java_java_lang_Thread_interruptImpl+0x78 (0x000003FFB4550140 [libjclse29.so+0x50140])
20:35:54 (0x000003FEC49D6992 [<unknown>+0x0])
20:35:54 ---------------------------------------
20:38:17 TEST: java/lang/Thread/virtual/Parking.java#Xcomp-noTieredCompilation
20:38:17 STARTED Parking::testPark10 'testPark10()'
20:38:17 Unhandled exception
20:38:17 Type=Segmentation error vmState=0x00000000
20:38:17 ----------- Stack Backtrace -----------
20:38:17 Java_java_lang_Thread_interruptImpl+0x78 (0x000003FF7E4D0140 [libjclse29.so+0x50140])
20:38:17 (0x000003FE93C0A092 [<unknown>+0x0])
Grinder to get trace log: https://openj9-jenkins.osuosl.org/job/Grinder/4415/
This looks like a 1/50 failure and the previous grinder didn't reproduce the issue. Here's another one: https://openj9-jenkins.osuosl.org/job/Grinder/4420/
@tajila / @JasonFengJ9 By any chance do you have result files from one of the failure copied to inspect (either from https://github.com/eclipse-openj9/openj9/issues/21990#issue-3102973357 or from analysis done in https://github.com/eclipse-openj9/openj9/issues/21990#issuecomment-2936282343 ?
Seems like @dchopra001 is unable to reproduce the issue.
@dchopra001 Also try to get the grinder on internal jenkins, we may have better success there.
By any chance do you have result files from one of the failure copied to inspect (either from https://github.com/eclipse-openj9/openj9/issues/21990#issue-3102973357
This link in question has been purged, is the result file from https://github.com/eclipse-openj9/openj9/issues/21990#issuecomment-2984533389 useful?
Instruction sequence leading up to the crash (we crash at offset 142):
(kca) x/30i 0x000003FEBE69B292-142
0x3febe69b204 {java/lang/Thread.interruptImpl} +0 e31050000004 lg %r1, 0(%r5)
0x3febe69b20a {java/lang/Thread.interruptImpl} +6 e3e05ff8ff24 stg %r14, -8(%r5)
0x3febe69b210 {java/lang/Thread.interruptImpl} +12 e3505fa8ff71 lay %r5, -0x58(%r5)
0x3febe69b216 {java/lang/Thread.interruptImpl} +18 e350d0500021 clg %r5, 0x50(%r13) J9VMThread.stackOverflowMark
0x3febe69b21c {java/lang/Thread.interruptImpl} +24 a74400aa jl 0x3febe69b370 C>> +364
0x3febe69b220 {java/lang/Thread.interruptImpl} +28 eb6c50080024 stmg %r6, %r12, 8(%r5) <<< ^+382
0x3febe69b226 {java/lang/Thread.interruptImpl} +34 e31050580024 stg %r1, 0x58(%r5)
0x3febe69b22c {java/lang/Thread.interruptImpl} +40 b904002d lgr %r2, %r13
0x3febe69b230 {java/lang/Thread.interruptImpl} +44 c060a0cb8447 larl %r6, 0x3fe0000babe CONST 0xbabe
0x3febe69b236 {java/lang/Thread.interruptImpl} +50 a5610000 iihl %r6, 0
0x3febe69b23a {java/lang/Thread.interruptImpl} +54 41305058 la %r3, 0x58(%r5)
0x3febe69b23e {java/lang/Thread.interruptImpl} +58 c0c000000055 larl %r12, 0x3febe69b2e8 {java/lang/Thread.interruptImpl} +228
0x3febe69b244 {java/lang/Thread.interruptImpl} +64 e3505fd8ff71 lay %r5, -0x28(%r5)
0x3febe69b24a {java/lang/Thread.interruptImpl} +70 d217d028c028 mvc 0x28(0x18, %r13), 0x28(%r12)
0x3febe69b250 {java/lang/Thread.interruptImpl} +76 e350d0200024 stg %r5, 0x20(%r13) J9VMThread.sp
0x3febe69b256 {java/lang/Thread.interruptImpl} +82 d2275000c000 mvc 0(0x28, %r5), 0(%r12)
0x3febe69b25c {java/lang/Thread.interruptImpl} +88 eb01dbb0007a agsi 0xbb0(%r13), 1
0x3febe69b262 {java/lang/Thread.interruptImpl} +94 e310d0980004 lg %r1, 0x98(%r13) J9VMThread.publicFlags
0x3febe69b268 {java/lang/Thread.interruptImpl} +100 > b90400b1 lgr %r11, %r1 <<< ^+130
0x3febe69b26c {java/lang/Thread.interruptImpl} +104 | e3b0c0480080 ng %r11, 0x48(%r12)
0x3febe69b272 {java/lang/Thread.interruptImpl} +110 -1:-1 |* a7640067 jlh 0x3febe69b340 C>> +316 //
0x3febe69b276 {java/lang/Thread.interruptImpl} +114 || b90400b1 lgr %r11, %r1
0x3febe69b27a {java/lang/Thread.interruptImpl} +118 || e3b0c0400080 ng %r11, 0x40(%r12)
0x3febe69b280 {java/lang/Thread.interruptImpl} +124 || eb1bd0980030 csg %r1, %r11, 0x98(%r13) J9VMThread.publicFlags
0x3febe69b286 {java/lang/Thread.interruptImpl} +130 *| a764fff1 jlh 0x3febe69b268 C>> ^+100
0x3febe69b28a {java/lang/Thread.interruptImpl} +134 | e3e0c0500004 lg %r14, 0x50(%r12)
0x3febe69b290 {java/lang/Thread.interruptImpl} +140 | 0dee basr %r14, %r14 Call>>
0x3febe69b292 {java/lang/Thread.interruptImpl} +142 | e350d0200004 lg %r5, 0x20(%r13) J9VMThread.sp
0x3febe69b298 {java/lang/Thread.interruptImpl} +148 | a7190020 lghi %r1, 0x20
0x3febe69b29c {java/lang/Thread.interruptImpl} +152 | b98200bb xgr %r11, %r11
KCA crashes when I'm trying to switch to the thread (to get the register states) where the crash happens. My KCA version is recent so I'm not sure if rebuilding on a newer branch will make a difference (Version: 1.2.1 (Apr 24 2025 19:09:32).
Looked into this with @dchopra001 as I wanted to check if this suffers from same issue as described in https://github.com/eclipse-openj9/openj9/issues/21717#issuecomment-2991891713 as from @tajila 's analysis in [1], it seemed like JIT frame used GPR9 to hold the object that got corrupted (Which is one of the non volatile register before the helper call).
Here is the JIT compiled code for java/lang/Thread.interrupt0
(0x000003FEBE69A564-106)/107bi
0x3febe69a4fa {java/lang/Thread.interrupt0} +0 e31050000004 lg %r1, 0(%r5)
0x3febe69a500 {java/lang/Thread.interrupt0} +6 e3e05ff8ff24 stg %r14, -8(%r5)
0x3febe69a506 {java/lang/Thread.interrupt0} +12 e3505f98ff71 lay %r5, -0x68(%r5)
0x3febe69a50c {java/lang/Thread.interrupt0} +18 e350d0500021 clg %r5, 0x50(%r13) J9VMThread.stackOverflowMark
0x3febe69a512 {java/lang/Thread.interrupt0} +24 a7440177 jl 0x3febe69a800 C>> +774
0x3febe69a516 {java/lang/Thread.interrupt0} +28 eb6b50080024 stmg %r6, %r11, 8(%r5) <<< ^+792
0x3febe69a51c {java/lang/Thread.interrupt0} +34 e31050680024 stg %r1, 0x68(%r5)
0x3febe69a522 {java/lang/Thread.interrupt0} +40 e36010680004 lg %r6, 0x68(%r1)
0x3febe69a528 {java/lang/Thread.interrupt0} +46 e36050580024 stg %r6, 0x58(%r5)
0x3febe69a52e {java/lang/Thread.interrupt0} +52 -1:6 e3706000002a lzrg %r7, 0(%r6) // monitorenter
0x3febe69a534 {java/lang/Thread.interrupt0} +58 e39070d80002 ltg %r9, 0xd8(%r7)
0x3febe69a53a {java/lang/Thread.interrupt0} +64 a7c4011b jle 0x3febe69a770 C>> +630
0x3febe69a53e {java/lang/Thread.interrupt0} +68 41996000 la %r9, 0(%r9, %r6)
0x3febe69a542 {java/lang/Thread.interrupt0} +72 b9820088 xgr %r8, %r8
0x3febe69a546 {java/lang/Thread.interrupt0} +76 eb8d90000030 csg %r8, %r13, 0(%r9)
0x3febe69a54c {java/lang/Thread.interrupt0} +82 a7440104 jl 0x3febe69a754 C>> +602
0x3febe69a550 {java/lang/Thread.interrupt0} +86 eb01dba8007a agsi 0xba8(%r13), 1
0x3febe69a556 {java/lang/Thread.interrupt0} +92 e36050500024 stg %r6, 0x50(%r5) <<< ^+626 ^+706
0x3febe69a55c {java/lang/Thread.interrupt0} +98 -1:8 1800 lr %r0, %r0 // Try{ // invokespecial 216 {java/lang/Thread.interruptImpl()V}
0x3febe69a55e {java/lang/Thread.interrupt0} +100 c0e500000131 brasl %r14, 0x3febe69a7c0 U>> +710 Snippet-> {java/lang/Thread.interruptImpl}
0x3febe69a564 {java/lang/Thread.interrupt0} +106 e3706000002a lzrg %r7, 0(%r6)
...
0x3febe69a754 {java/lang/Thread.interrupt0} +602 b9040091 lgr %r9, %r1 <<< +82
0x3febe69a758 {java/lang/Thread.interrupt0} +606 b904002d lgr %r2, %r13
0x3febe69a75c {java/lang/Thread.interrupt0} +610 b9040036 lgr %r3, %r6
0x3febe69a760 {java/lang/Thread.interrupt0} +614 -1:6 1800 lr %r0, %r0 // monitorenter
0x3febe69a762 {java/lang/Thread.interrupt0} +616 c0e575fa2e4f brasl %r14, 0x3ffaa5e0400
0x3febe69a768 {java/lang/Thread.interrupt0} +622 b9040019 lgr %r1, %r9
0x3febe69a76c {java/lang/Thread.interrupt0} +626 a7f4fef5 j 0x3febe69a556 U>> ^+92
In case we fail inlined sequence of monent at +76, we would go to OOL where local RA will use GPR9 to preserve GPR1 which is the Thread object that later is passed to JNI call Java_java_lang_Thread_interruptImpl. as summarized in https://github.com/eclipse-openj9/openj9/issues/21717#issuecomment-2991891713 in case of jitmonitorenter enters blocking mode where virtual thread is unmounted and upon returning we did not preserve the non volatile register - it seems like same may have happened here, so it seems more likely the issue that should be resolved by change [2] (Opening up PR soon).
[1]. https://github.com/eclipse-openj9/openj9/issues/21990#issuecomment-2936282343 [2]. https://github.com/r30shah/openj9/commits/proto21717
Grinder with custom build to verify fix: https://openj9-jenkins.osuosl.org/job/Grinder/4423/
The grinder doesn't reproduce the failure in this issue so I think we should be able to close it as a duplicate of #21717 now
This can be closed as https://github.com/eclipse-openj9/openj9/pull/22128 is merged.
Actually, I'll keep this open until we re-enable tests
actually no tests were excluded for this