openj9 icon indicating copy to clipboard operation
openj9 copied to clipboard

jdk_lang_j9_1 java/lang/Thread/virtual/Parking.java#Xcomp-noTieredCompilation Segmentation error vmState=0x00000000

Open JasonFengJ9 opened this issue 6 months ago • 5 comments

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

JasonFengJ9 avatar May 30 '25 11:05 JasonFengJ9

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();
        }
    }

tajila avatar Jun 03 '25 16:06 tajila

@hzongaro Please take a look

tajila avatar Jun 03 '25 16:06 tajila

@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?

hzongaro avatar Jun 05 '25 19:06 hzongaro

@dchopra001 Can you take a look at this failure?

r30shah avatar Jun 05 '25 20:06 r30shah

@dchopra001 any update on this one ?

r30shah avatar Jun 13 '25 15:06 r30shah

@dchopra001 any update on this one ?

r30shah avatar Jun 17 '25 14:06 r30shah

I'm unable to reproduce this locally so far, so still working on that. Will update once I have a local repro.

dchopra001 avatar Jun 17 '25 18:06 dchopra001

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.

dchopra001 avatar Jun 17 '25 20:06 dchopra001

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])

JasonFengJ9 avatar Jun 18 '25 14:06 JasonFengJ9

Grinder to get trace log: https://openj9-jenkins.osuosl.org/job/Grinder/4415/

dchopra001 avatar Jun 18 '25 16:06 dchopra001

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/

dchopra001 avatar Jun 18 '25 21:06 dchopra001

@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.

r30shah avatar Jun 19 '25 20:06 r30shah

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?

JasonFengJ9 avatar Jun 19 '25 20:06 JasonFengJ9

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

dchopra001 avatar Jun 19 '25 21:06 dchopra001

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).

dchopra001 avatar Jun 19 '25 22:06 dchopra001

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

r30shah avatar Jun 23 '25 16:06 r30shah

Grinder with custom build to verify fix: https://openj9-jenkins.osuosl.org/job/Grinder/4423/

dchopra001 avatar Jun 26 '25 19:06 dchopra001

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

dchopra001 avatar Jul 02 '25 18:07 dchopra001

This can be closed as https://github.com/eclipse-openj9/openj9/pull/22128 is merged.

r30shah avatar Jul 03 '25 14:07 r30shah

Actually, I'll keep this open until we re-enable tests

tajila avatar Jul 07 '25 12:07 tajila

actually no tests were excluded for this

tajila avatar Jul 07 '25 18:07 tajila