eclipse-openj9 / openj9

Eclipse OpenJ9: A Java Virtual Machine for OpenJDK that's optimized for small footprint, fast start-up, and high throughput. Builds on Eclipse OMR (https://github.com/eclipse/omr) and combines with the Extensions for OpenJDK for OpenJ9 repo.
Other
3.29k stars 723 forks source link

abbs Object neither in heap nor stack-allocated in thread ASSERTION FAILED MarkingSchemeRootMarker.cpp:53 #20079

Open pshipton opened 3 months ago

pshipton commented 3 months ago

Internal build rtv-rhel8x86-rtp-test-oht72-1 [Linux IA32] 80 JIT_Sanity.abbs.5mins.Mode140 -Xgcpolicy:optthruput -Xshareclasses -Xjit -Xnocompressedrefs

100x grinder - didn't reproduce. There was one different failure java.lang.IllegalArgumentException: Package com.ibm.test already defined

j> 10:43:45 20240828 10:43:45 Plugin Loader INFO: Loading com.ibm.jtc.test.jltf.workunitadapters.JCKWorkUnitPlugin
j> 10:43:45 20240828 10:43:45 On First Failure Plugin INFO: Registering First Failure Handler
j> 10:43:45 20240828 10:43:45 Excessive Failure Plugin INFO: Registering Excessive Failure Handler
j> 10:43:45 main in static init
j> 10:43:49 20240828 10:43:48 Pooled Work Thread Factory INFO: Thread Pool Exhaustion Behaviour: Grow Pool
j> 10:43:49 20240828 10:43:48 ConfigurationReporter INFO: Change detected
j> 10:43:49 20240828 10:43:48 Execution Timer INFO: Execution Timer started
j> 10:43:49 20240828 10:43:48 Thread Control Engine INFO: Starting JobSet Primary
j> 10:43:56 08270200: Object neither in heap nor stack-allocated in thread Worker-11
j> 10:43:56 08270200:   O-Slot=08270158
j> 10:43:56 08270200:   O-Slot value=B191BC58
j> 10:43:56 08270200:   PC=B08314C9
j> 10:43:56 08270200:   framesWalked=1
j> 10:43:56 08270200:   arg0EA=08270158
j> 10:43:56 08270200:   walkSP=082700FC
j> 10:43:56 08270200:   literals=00000008
j> 10:43:56 08270200:   jitInfo=B34614B0
j> 10:43:56 08270200:   method=B0A6FE84 (com/ibm/jtc/svt/lambda/TestLambdaMultithreaded.runNumberCounter()V) (JIT)
j> 10:43:56 08270200:   stack=0826E5C8-082701B8
j> 10:43:56 17:43:56.353 0xb460b700    j9mm.479    *   ** ASSERTION FAILED ** at ../../gc_glue_java/MarkingSchemeRootMarker.cpp:53: ((MM_StackSlotValidator(MM_StackSlotValidator::NOT_ON_HEAP, object, stackLocation, walkState).validate(_env)))
dmitripivkine commented 3 months ago

I will triage this tomorrow and add extra details. However there is a bad O-slot in JIT frame, so passing to the JIT for investigation. @hzongaro FYI

dmitripivkine commented 3 months ago

Problematic frame - DDR can not walk it to the end by some reason:

<8270200> JIT frame: bp = 0x08270154, pc = 0xB08314C9, unwindSP = 0x08270118, cp = 0xB0A6F820, arg0EA = 0x08270158, jitInfo = 0xB34614B0
<8270200>   Method: com/ibm/jtc/svt/lambda/TestLambdaMultithreaded.runNumberCounter()V !j9method 0xB0A6FE84
<8270200>   Bytecode index = 2, inlineDepth = 0, PC offset = 0x00000185
<8270200>   stackMap=0xB34615D4, slots=I16(0x0001) parmBaseOffset=I16(0x0004), parmSlots=U16(0x0001), localBaseOffset=I16(0xFFF0)
<8270200>   Described JIT args starting at 0x08270158 for U16(0x0001) slots
<8270200>       O-Slot: : a0[0x08270158] = 0xB191BC58 <--- nor in heap or this thread stack
<8270200>   Described JIT temps starting at 0x08270144 for IDATA(0x00000004) slots
<8270200>       O-Slot: : t3[0x08270144] = 0xB5FD9970
<8270200>       O-Slot: : t2[0x08270148] = 0xB6C51418
<8270200>       O-Slot: : t1[0x0827014C] = 0xF6B26470
<8270200>       O-Slot: : t0[0x08270150] = 0xB64FA0B0
<8270200>   JIT-RegisterMap = UDATA(0x00000000)
<8270200>   JIT-Frame-RegisterMap[0x08270118] = UDATA(0xB72C1400) (jit_ebx)
<8270200>   JIT-Frame-RegisterMap[0x0827011C] = UDATA(0x000002B7) (jit_ecx)
<8270200>   JIT-Frame-RegisterMap[0x08270120] = UDATA(0x000002B8) (jit_esi)
Aug 29, 2024 6:19:52 AM com.ibm.j9ddr.vm29.events.DefaultEventListener corruptData
WARNING: CorruptDataException thrown walking stack. walkThread = 0x08270200
com.ibm.j9ddr.AddressedCorruptDataException: Invalid JIT return address
    at com.ibm.j9ddr.vm29.j9.stackwalker.JITStackWalker$JITStackWalker_29_V0.jitWalkStackFrames(JITStackWalker.java:285)
    at com.ibm.j9ddr.vm29.j9.stackwalker.JITStackWalker.jitWalkStackFrames(JITStackWalker.java:100)

Object heap location:
+--------+--------+--------+--------+--------+--------+----------------------
| region | start  |  end   |subspace| flags  |  size  |      region type
+--------+--------+--------+--------+--------+--------+----------------------
 f734cfe8 b5da0000 b7a20000 f734cb88 00000009  1c80000 ADDRESS_ORDERED
+--------+--------+--------+--------+--------+--------+----------------------
dmitripivkine commented 3 months ago

This O-slot looks bad too:

<8270200>       O-Slot: : t1[0x0827014C] = 0xF6B26470
pshipton commented 1 month ago

Internal build [Linux IA32] 80 JIT_Sanity.abbs.5mins.Mode140 rtv-rhel8x86-rtp-test-cc6io-1