Closed pshipton closed 10 months ago
https://openj9-jenkins.osuosl.org/job/Test_openjdk8_j9_special.system_aarch64_linux_Personal_testList_0/85
DaaLoadTest_all_special_5m_22 -XX:+UseCompressedOops -Xjit -Xgcpolicy:gencon -Xaggressive
DLT class net.openj9.test.binaryData.LongIntegerComparison Total: 1 Fail: 1 Ignore: 0
DLT FAILURE: DoComps(net.openj9.test.binaryData.LongIntegerComparison) - java.lang.ClassCastException@d156a6fe
...
DLT class net.openj9.test.binaryData.LongIntegerComparison Total: 1 Fail: 1 Ignore: 0
DLT FAILURE: DoComps(net.openj9.test.binaryData.LongIntegerComparison) - java.lang.ClassCastException@f14a8691
...
DLT class net.openj9.test.binaryData.LongIntegerComparison Total: 1 Fail: 1 Ignore: 0
DLT FAILURE: DoComps(net.openj9.test.binaryData.LongIntegerComparison) - java.lang.ClassCastException@637b5fa8
...
DLT class net.openj9.test.binaryData.LongIntegerComparison Total: 1 Fail: 1 Ignore: 0
DLT FAILURE: DoComps(net.openj9.test.binaryData.LongIntegerComparison) - java.lang.ClassCastException@b589884
...
DLT class net.openj9.test.binaryData.LongIntegerComparison Total: 1 Fail: 1 Ignore: 0
DLT FAILURE: DoComps(net.openj9.test.binaryData.LongIntegerComparison) - java.lang.ClassCastException@d5c42423
1 failure in a 20x Grinder job for DaaLoadTest_all_special_5m_22: https://openj9-jenkins.osuosl.org/job/Grinder/3079/
DLT testStarted : testBoundaries(net.openj9.test.binaryData.TestDouble2ByteArray)
DLT testFailure: testBoundaries(net.openj9.test.binaryData.TestDouble2ByteArray): java.lang.ClassCastException@be153333
DLT java.lang.IllegalArgumentException: java.lang.ClassCastException@be153333
DLT at sun.reflect.GeneratedMethodAccessor3751.invoke(Unknown Source)
DLT at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
DLT at java.lang.reflect.Method.invoke(Method.java:503)
DLT at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
(Many other exceptions follow)
I got dump files for DaaLoadTest_all_special_5m_22. https://hyc-runtimes-jenkins.swg-devops.com/job/Grinder/36496/
JVMDUMP055I Processing dump event "systhrow", detail "java/lang/ClassCastException", exception "net.openj9.test.PD2Primitive.TestPD2I incompatible with net.openj9.test.PDMoveShifts.TestPDMove" at 2023/12/01 01:39:31 - please wait.
JVMDUMP032I JVM requested System dump using '/home/jenkins/workspace/Grinder/aqa-tests/TKG/output_17014100474685/DaaLoadTest_all_special_5m_22_ITER_9/20231201-013453-DaaLoadTest/results/core.20231201.013931.550222.0001.dmp' in response to an event
JVMDUMP055I Processing dump event "systhrow", detail "java/lang/ClassCastException", exception "net.openj9.test.PD2Primitive.TestPD2I incompatible with net.openj9.test.PDMoveShifts.TestPDMove" at 2023/12/01 01:39:31 - please wait.
JVMDUMP010I System dump written to /home/jenkins/workspace/Grinder/aqa-tests/TKG/output_17014100474685/DaaLoadTest_all_special_5m_22_ITER_9/20231201-013453-DaaLoadTest/results/core.20231201.013931.550222.0001.dmp
core file generated - /home/jenkins/workspace/Grinder/aqa-tests/TKG/output_17014100474685/DaaLoadTest_all_special_5m_22_ITER_9/20231201-013453-DaaLoadTest/results/core.20231201.013931.550222.0001.dmp
JVMDUMP032I JVM requested JIT dump using '/home/jenkins/workspace/Grinder/aqa-tests/TKG/output_17014100474685/DaaLoadTest_all_special_5m_22_ITER_9/20231201-013453-DaaLoadTest/results/jitdump.20231201.013931.550222.0003.dmp' in response to an event
JVMDUMP051I JIT dump occurred in 'load-4' thread 0x0000000000464D00
JVMDUMP053I JIT dump is recompiling org/junit/internal/runners/statements/InvokeMethod.evaluate()V
JVMDUMP053I JIT dump is recompiling org/junit/runners/BlockJUnit4ClassRunner.runChild(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V
JVMDUMP053I JIT dump is recompiling org/junit/runners/Suite.runChild(Ljava/lang/Object;Lorg/junit/runner/notification/RunNotifier;)V
JVMDUMP053I JIT dump is recompiling org/junit/runner/JUnitCore.run(Lorg/junit/runner/Runner;)Lorg/junit/runner/Result;
JVMDUMP053I JIT dump is recompiling net/openj9/test/PDMoveShifts/ShiftTestRunner.runTests(I)Z
JVMDUMP053I JIT dump is recompiling net/adoptopenjdk/loadTest/adaptors/ArbitraryJavaAdaptor.executeTest()Lnet/adoptopenjdk/loadTest/adaptors/AdaptorInterface$ResultStatus;
JVMDUMP010I JIT dump written to /home/jenkins/workspace/Grinder/aqa-tests/TKG/output_17014100474685/DaaLoadTest_all_special_5m_22_ITER_9/20231201-013453-DaaLoadTest/results/jitdump.20231201.013931.550222.0003.dmp
JVMDUMP013I Processed dump event "systhrow", detail "java/lang/ClassCastException".
JVMDUMP032I JVM requested Java dump using '/home/jenkins/workspace/Grinder/aqa-tests/TKG/output_17014100474685/DaaLoadTest_all_special_5m_22_ITER_9/20231201-013453-DaaLoadTest/results/javacore.20231201.013931.550222.0002.txt' in response to an event
javacore file generated - /home/jenkins/workspace/Grinder/aqa-tests/TKG/output_17014100474685/DaaLoadTest_all_special_5m_22_ITER_9/20231201-013453-DaaLoadTest/results/javacore.20231201.013931.550222.0002.txt
JVMDUMP010I Java dump written to /home/jenkins/workspace/Grinder/aqa-tests/TKG/output_17014100474685/DaaLoadTest_all_special_5m_22_ITER_9/20231201-013453-DaaLoadTest/results/javacore.20231201.013931.550222.0002.txt
JVMDUMP013I Processed dump event "systhrow", detail "java/lang/ClassCastException".
The stacktrace for the thread "load-4" is as follows:
<464d00> *** BEGIN STACK WALK, flags = 00400001 walkThread = 4,607,232 ***
<464d00> ITERATE_O_SLOTS
<464d00> RECORD_BYTECODE_PC_OFFSET
<464d00> Initial values: walkSP = 0x000000000047D6B8, PC = 0x0000000000000001, literals = 0x0000000000000000, A0 = 0x000000000047D6D0, j2iFrame = 0x000000000047D758, decomp = 0x0000000000000000
<464d00> Generic special frame: bp = 0x000000000047D6D0, sp = 0x000000000047D6B8, pc = 0x0000000000000001, cp = 0x0000000000000000, arg0EA = 0x000000000047D6D0, flags = 0x0000000000000000
<464d00> J2I frame: bp = 0x000000000047D758, sp = 0x000000000047D6D8, pc = 0x0000FFFEF4030B9D, cp = 0x000000000052A5C0, arg0EA = 0x000000000047D770, flags = 0x0000000010000000
<464d00> Method: sun/reflect/GeneratedMethodAccessor4802.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; !j9method 0x000000000052A6E8
<464d00> Bytecode index = 13
<464d00> Using local mapper
<464d00> Locals starting at 0x000000000047D770 for 0x0000000000000003 slots
<464d00> I-Slot: a0[0x000000000047D770] = 0x00000000FE628888
<464d00> I-Slot: a1[0x000000000047D768] = 0x00000000F3A0F448
<464d00> O-Slot: a2[0x000000000047D760] = 0x00000000F3A0F8D0
<464d00> JIT-J2I-RegisterMap[0x000000000047D700] = UDATA(0x000000000052A400) (jit_r21)
<464d00> JIT-J2I-RegisterMap[0x000000000047D708] = UDATA(0x00000000F3909CF0) (jit_r22)
<464d00> JIT-J2I-RegisterMap[0x000000000047D710] = UDATA(0x00000000F3909CE0) (jit_r23)
<464d00> JIT-J2I-RegisterMap[0x000000000047D718] = UDATA(0x00000000004AA100) (jit_r24)
<464d00> JIT-J2I-RegisterMap[0x000000000047D720] = UDATA(0x00000000000E2A00) (jit_r25)
<464d00> JIT-J2I-RegisterMap[0x000000000047D728] = UDATA(0x00000000F0397E58) (jit_r26)
<464d00> JIT-J2I-RegisterMap[0x000000000047D730] = UDATA(0x00000000F3A0F8D0) (jit_r27)
<464d00> JIT-J2I-RegisterMap[0x000000000047D738] = UDATA(0x00000000F3A0F448) (jit_r28)
<464d00> JIT inline frame: bp = 0x000000000047D858, pc = 0x0000FFFF6F2595A8, unwindSP = 0x000000000047D760, cp = 0x000000000010D4D0, arg0EA = 0x0000000000000000, jitInfo = 0x0000FFFF34254478
<464d00> Method: sun/reflect/DelegatingMethodAccessorImpl.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; !j9method 0x000000000010D568
<464d00> Bytecode index = 6, inlineDepth = 5, PC offset = 0x000000000041C798
<464d00> JIT inline frame: bp = 0x000000000047D858, pc = 0x0000FFFF6F2595A8, unwindSP = 0x000000000047D760, cp = 0x0000000000064A30, arg0EA = 0x0000000000000000, jitInfo = 0x0000FFFF34254478
<464d00> Method: java/lang/reflect/Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; !j9method 0x0000000000065B00
<464d00> Bytecode index = 58, inlineDepth = 4, PC offset = 0x000000000041B298
<464d00> JIT inline frame: bp = 0x000000000047D858, pc = 0x0000FFFF6F2595A8, unwindSP = 0x000000000047D760, cp = 0x00000000004A9EC0, arg0EA = 0x0000000000000000, jitInfo = 0x0000FFFF34254478
<464d00> Method: org/junit/runners/model/FrameworkMethod$1.runReflectiveCall()Ljava/lang/Object; !j9method 0x00000000004A9F98
<464d00> Bytecode index = 15, inlineDepth = 3, PC offset = 0x0000000000A529D8
<464d00> JIT inline frame: bp = 0x000000000047D858, pc = 0x0000FFFF6F2595A8, unwindSP = 0x000000000047D760, cp = 0x00000000004A96C0, arg0EA = 0x0000000000000000, jitInfo = 0x0000FFFF34254478
<464d00> Method: org/junit/internal/runners/model/ReflectiveCallable.run()Ljava/lang/Object; !j9method 0x00000000004A9758
<464d00> Bytecode index = 1, inlineDepth = 2, PC offset = 0x00000000009F5688
<464d00> JIT inline frame: bp = 0x000000000047D858, pc = 0x0000FFFF6F2595A8, unwindSP = 0x000000000047D760, cp = 0x000000000049C210, arg0EA = 0x0000000000000000, jitInfo = 0x0000FFFF34254478
<464d00> Method: org/junit/runners/model/FrameworkMethod.invokeExplosively(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; !j9method 0x000000000049C998
<464d00> Bytecode index = 10, inlineDepth = 1, PC offset = 0x000000000083B7A8
<464d00> JIT frame: bp = 0x000000000047D858, pc = 0x0000FFFF6F2595A8, unwindSP = 0x000000000047D760, cp = 0x0000000000493EF0, arg0EA = 0x000000000047D860, jitInfo = 0x0000FFFF34254478
<464d00> Method: org/junit/internal/runners/statements/InvokeMethod.evaluate()V !j9method 0x00000000004941E0
<464d00> Bytecode index = 10, inlineDepth = 0, PC offset = 0x0000000000001458
<464d00> stackMap=0x0000FFFF34255396, slots=I16(0x0001) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0001), localBaseOffset=I16(0xFFB8)
<464d00> Described JIT args starting at 0x000000000047D860 for U16(0x0001) slots
<464d00> O-Slot: : a0[0x000000000047D860] = 0x00000000F3A0F680
<464d00> Described JIT temps starting at 0x000000000047D810 for IDATA(0x0000000000000009) slots
<464d00> I-Slot: : t8[0x000000000047D810] = 0x00000000F3A0F8C0
<464d00> I-Slot: : t7[0x000000000047D818] = 0x00000000F3A0F898
<464d00> SA-Obj[47d820]
<464d00> F-Slot[0x000000000047D828] = 0x00000000F3A0F448
<464d00> F-Slot[0x000000000047D82C] = 0x00000000F3A0F8D0
<464d00> F-Slot[0x000000000047D830] = 0x00000000F390A5E0
<464d00> I-Slot: : t5[0x000000000047D828] = 0xF3A0F8D0F3A0F448
<464d00> I-Slot: : t4[0x000000000047D830] = 0x00000000F390A5E0
<464d00> I-Slot: : t3[0x000000000047D838] = 0x00000000F3A0F780
<464d00> I-Slot: : t2[0x000000000047D840] = 0x00000000F3A0F830
<464d00> I-Slot: : t1[0x000000000047D848] = 0x00000000F3A0F680
<464d00> I-Slot: : t0[0x000000000047D850] = 0x00000000F3A0F680
<464d00> JIT-RegisterMap = UDATA(0x0000000000000000)
<464d00> JIT-Frame-RegisterMap[0x000000000047D7B0] = UDATA(0x0000000000494000) (jit_r21)
<464d00> JIT-Frame-RegisterMap[0x000000000047D7B8] = UDATA(0x00000000F3909CF0) (jit_r22)
<464d00> JIT-Frame-RegisterMap[0x000000000047D7C0] = UDATA(0x00000000F3909CE0) (jit_r23)
<464d00> JIT-Frame-RegisterMap[0x000000000047D7C8] = UDATA(0x00000000004AA100) (jit_r24)
<464d00> JIT-Frame-RegisterMap[0x000000000047D7D0] = UDATA(0x00000000000E2A00) (jit_r25)
<464d00> JIT-Frame-RegisterMap[0x000000000047D7D8] = UDATA(0x00000000F0397E58) (jit_r26)
<464d00> JIT-Frame-RegisterMap[0x000000000047D7E0] = UDATA(0x00000000F390E3F0) (jit_r27)
<464d00> JIT-Frame-RegisterMap[0x000000000047D7E8] = UDATA(0x00000000F390D8A8) (jit_r28)
<464d00> JIT inline frame: bp = 0x000000000047D938, pc = 0x0000FFFF6F239978, unwindSP = 0x000000000047D860, cp = 0x0000000000486D90, arg0EA = 0x0000000000000000, jitInfo = 0x0000FFFF34A829B8
<464d00> Method: org/junit/runners/ParentRunner.runLeaf(Lorg/junit/runners/model/Statement;Lorg/junit/runner/Description;Lorg/junit/runner/notification/RunNotifier;)V !j9method 0x00000000004877A8
<464d00> Bytecode index = 17, inlineDepth = 1, PC offset = 0x000000000022B1D4
<464d00> JIT frame: bp = 0x000000000047D938, pc = 0x0000FFFF6F239978, unwindSP = 0x000000000047D860, cp = 0x00000000004908E0, arg0EA = 0x000000000047D950, jitInfo = 0x0000FFFF34A829B8
<464d00> Method: org/junit/runners/BlockJUnit4ClassRunner.runChild(Lorg/junit/runners/model/FrameworkMethod;Lorg/junit/runner/notification/RunNotifier;)V !j9method 0x00000000004910E8
<464d00> Bytecode index = 30, inlineDepth = 0, PC offset = 0x0000000000000668
<464d00> stackMap=0x0000FFFF34A82FF6, slots=I16(0x0003) parmBaseOffset=I16(0x0008), parmSlots=U16(0x0003), localBaseOffset=I16(0xFFA0)
<464d00> Described JIT args starting at 0x000000000047D940 for U16(0x0003) slots
<464d00> O-Slot: : a2[0x000000000047D940] = 0x00000000F3909CE0
<464d00> O-Slot: : a1[0x000000000047D948] = 0x00000000F390A5E0
<464d00> O-Slot: : a0[0x000000000047D950] = 0x00000000F390A230
<464d00> Described JIT temps starting at 0x000000000047D8D8 for IDATA(0x000000000000000C) slots
<464d00> O-Slot: : t11[0x000000000047D8D8] = 0x00000000F390DAE8
<464d00> O-Slot: : t10[0x000000000047D8E0] = 0x00000000F390A230
<464d00> O-Slot: : t9[0x000000000047D8E8] = 0x00000000F3A0F680
<464d00> I-Slot: : t8[0x000000000047D8F0] = 0x00000000F3A0F2C0
<464d00> I-Slot: : t7[0x000000000047D8F8] = 0x00000000002E1300
<464d00> I-Slot: : t6[0x000000000047D900] = 0x00000000F390CB28
<464d00> I-Slot: : t5[0x000000000047D908] = 0x0000FFFF6F0E1AB0
<464d00> I-Slot: : t4[0x000000000047D910] = 0x00000000F3A0F390
<464d00> O-Slot: : t3[0x000000000047D918] = 0x00000000F3A0F848
<464d00> I-Slot: : t2[0x000000000047D920] = 0x00000000F390A260
<464d00> I-Slot: : t1[0x000000000047D928] = 0x00000000F390A260
<464d00> I-Slot: : t0[0x000000000047D930] = 0x00000000F3A0F258
<464d00> JIT-RegisterMap = UDATA(0x0000000000000000)
<464d00> JIT-Frame-RegisterMap[0x000000000047D880] = UDATA(0x00000000F390A260) (jit_r21)
<464d00> JIT-Frame-RegisterMap[0x000000000047D888] = UDATA(0x00000000F390A230) (jit_r22)
<464d00> JIT-Frame-RegisterMap[0x000000000047D890] = UDATA(0x00000000F3909CE0) (jit_r23)
<464d00> JIT-Frame-RegisterMap[0x000000000047D898] = UDATA(0x00000000F3A0F370) (jit_r24)
<464d00> JIT-Frame-RegisterMap[0x000000000047D8A0] = UDATA(0x00000000002E1300) (jit_r25)
<464d00> JIT-Frame-RegisterMap[0x000000000047D8A8] = UDATA(0x00000000F0397E58) (jit_r26)
<464d00> JIT-Frame-RegisterMap[0x000000000047D8B0] = UDATA(0x00000000F390E3F0) (jit_r27)
<464d00> JIT-Frame-RegisterMap[0x000000000047D8B8] = UDATA(0x00000000F390D8A8) (jit_r28)
...
The first argument of Method: sun/reflect/GeneratedMethodAccessor4802.invoke
is an instanceof TestPD2I
class as the ClassCastException suggests.
<464d00> I-Slot: a1[0x000000000047D768] = 0x00000000F3A0F448
> !j9object 0x00000000F3A0F448
!J9Object 0x00000000F3A0F448 {
struct J9Class* clazz = !j9class 0x4BC800 // net/openj9/test/PD2Primitive/TestPD2I
The receiver object of org/junit/internal/runners/statements/InvokeMethod.evaluate()V
holds the instance of TestPD2I
class at target
field.
> !j9object 0x00000000F3A0F680
!J9Object 0x00000000F3A0F680 {
struct J9Class* clazz = !j9class 0x494000 // org/junit/internal/runners/statements/InvokeMethod
Object flags = 0x00000000;
I lockword = 0x00000000 (offset = 0) (java/lang/Object) <hidden>
Lorg/junit/runners/model/FrameworkMethod; testMethod = !fj9object 0xf390a5e0 (offset = 4) (org/junit/internal/runners/statements/InvokeMethod)
Ljava/lang/Object; target = !fj9object 0xf3a0f448 (offset = 8) (org/junit/internal/runners/statements/InvokeMethod)
}
Instances of the test classes are created in org/junit/runners/BlockJUnit4ClassRunner$1.runReflectiveCall
.
https://github.com/junit-team/junit4/blob/16228f3ccea3c6f1170488e0e268f3601d130f75/src/main/java/org/junit/runners/BlockJUnit4ClassRunner.java#L309
Looking at the core file took in https://hyc-runtimes-jenkins.swg-devops.com/job/Grinder/36496/, I find the code to create an instance of TestPD2I
class.
0xffff6f04c120 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +424 || 12185c00 and w0, w0, #0xffffff00
0xffff6f04c124 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +428 || f151641f cmp x0, #0x459, lsl #12
0xffff6f04c128 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +432 || 54000ba1 b.ne #0xffff6f04c29c C>> +804
0xffff6f04c12c {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +436 || d2990001 mov x1, #0xc800 CONST 0x4bc800 J9Class - {net/openj9/test/PD2Primitive/TestPD2I}
0xffff6f04c130 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +440 || f2a00961 movk x1, #0x4b, lsl #16
0xffff6f04c134 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +444 || f9403260 ldr x0, [x19, #0x60]
0xffff6f04c138 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +448 || f9403663 ldr x3, [x19, #0x68]
0xffff6f04c13c {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +452 || 91010004 add x4, x0, #0x40
0xffff6f04c140 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +456 || eb03009f cmp x4, x3
0xffff6f04c144 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +460 || 540032ec b.gt #0xffff6f04c7a0 C>> +2088
0xffff6f04c148 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +464 || f9808095 prfm pstl3strm, [x4, #0x100]
0xffff6f04c14c {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +468 || f9003264 str x4, [x19, #0x60]
0xffff6f04c150 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +472 || b9000001 str w1, [x0]
0xffff6f04c154 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +476 || aa0003f5 mov x21, x0
0xffff6f04c158 {org/.../BlockJUnit4ClassRunner$1.runReflectiveCall} +480 || d5033abf dmb ishst <<< ^+2100
I tried another run of Grinder with options to get trace logs of org/junit/runners/BlockJUnit4ClassRunner$1.runReflectiveCall
.
https://hyc-runtimes-jenkins.swg-devops.com/job/Grinder/36861/
This time the method belongs to TestByteArray2LongNumBytes
and the passed receiver is TestByteArray2Integer
.
JVMDUMP055I Processing dump event "systhrow", detail "java/lang/ClassCastException", exception "net.openj9.test.binaryData.TestByteArray2Integer incompatible with net.openj9.test.binaryData.TestByteArray2LongNumBytes" at 2023/12/12 09:35:59 - please wait.
In the trace log of runReflectiveCall
, there is a new
node (n2043n
) that creates instance of TestByteArray2Integer
. It is guarded by ProfiledGuard (n2297n
), which tests if the class of DelegatingConstructorAccessorImpl.delegate
with sun/reflect/GeneratedConstructorAccessor10
.
n2335n BBStart <block_79> (freq 9632) (extension of previous block) [ 0xffff0823c990] bci=[17,0,45] rc=0 vc=3599 vn=- li=79 udi=- nc=0
n2310n NULLCHK on n1996n [#32] [ 0xffff0823c1c0] bci=[17,1,45] rc=0 vc=3599 vn=- li=79 udi=- nc=1
n2295n aloadi <vft-symbol>[#276 Shadow] [flags 0x18607 0x0 ] (X!=0 ) [ 0xffff0823bd10] bci=[17,1,45] rc=2 vc=3599 vn=- li=79 udi=- nc=1 flg=0x4
n1996n l2a (X>=0 ) [ 0xffff08235fa0] bci=[17,1,45] rc=3 vc=3599 vn=- li=79 udi=- nc=1 flg=0x100
n4026n iu2l [ 0xffff0876da20] bci=[17,1,45] rc=1 vc=3599 vn=- li=79 udi=- nc=1
n4025n iloadi sun/reflect/DelegatingConstructorAccessorImpl.delegate Lsun/reflect/ConstructorAccessorImpl;[#636 Shadow +8] [flags 0x80607 0x0 ] [ 0xffff0876d9d0] bci=[17,1,45]
rc=1 vc=3599 vn=- li=79 udi=- nc=1
n3073n ==>aRegLoad
n2278n aRegStore x14 (X!=0 privatizedInlinerArg ) [ 0xffff0823b7c0] bci=[17,1,45] rc=0 vc=3599 vn=- li=79 udi=- nc=1 flg=0x2004
n1996n ==>l2a
n2297n ifacmpne --> block_46 BBStart at n2293n (ProfiledGuard/VftTest ) [ 0xffff0823bdb0] bci=[18,0,-] rc=0 vc=3599 vn=- li=79 udi=- nc=3 flg=0x1020
n2295n ==>aloadi
n2296n aconst 0x459000 (sun/reflect/GeneratedConstructorAccessor10.class) (classPointerConstant X!=0 X>=0 X<=0 ) [ 0xffff0823bd60] bci=[18,0,-] rc=1 vc=3599 vn=- li=79 udi=- nc=0 flg=0x10304
n3079n GlRegDeps [ 0xffff0831b220] bci=[18,0,-] rc=1 vc=3599 vn=- li=79 udi=- nc=2
n3077n PassThrough x14 [ 0xffff0831b180] bci=[17,1,45] rc=1 vc=3599 vn=- li=79 udi=- nc=1
n1996n ==>l2a
n3074n ==>aRegLoad
n2290n BBEnd </block_79> [ 0xffff0823bb80] bci=[18,0,-] rc=0 vc=3599 vn=- li=79 udi=- nc=0
n2298n BBStart <block_45> (freq 9632) (extension of previous block) [ 0xffff0823be00] bci=[18,8,-] rc=0 vc=3599 vn=- li=45 udi=- nc=0
n2044n treetop [ 0xffff08236ea0] bci=[18,0,-] rc=0 vc=3599 vn=- li=45 udi=- nc=1
n2043n new jitNewObject[#91 helper Method] [flags 0x400 0x0 ] (highWordZero Unsigned X!=0 X>=0 allocationCanBeRemoved ) [ 0xffff08236e50] bci=[18,0,-] rc=6 vc=3599 vn=- li=45 udi=- nc=1 flg=0x4104
n2042n loadaddr net/openj9/test/binaryData/TestByteArray2Integer[#645 Static] [flags 0x18307 0x0 ] [ 0xffff08236e00] bci=[18,0,-] rc=1 vc=3599 vn=- li=45 udi=- nc=0
n2045n allocationFence on n2043n (X==0 X>=0 X<=0 ) [ 0xffff08236ef0] bci=[18,0,-] rc=0 vc=3599 vn=- li=45 udi=- nc=0 flg=0x302
n2049n BBEnd </block_45> [ 0xffff08237030] bci=[18,13,-] rc=0 vc=3599 vn=- li=45 udi=- nc=0
aconst
node (n2296n
) says that class pointer of sun/reflect/GeneratedConstructorAccessor10
is 0x459000
. However, 0x459000
is sun/reflect/GeneratedConstructorAccessor245
according to javacore. Possibly, sun/reflect/GeneratedConstructorAccessor10
has been already unloaded and sun/reflect/GeneratedConstructorAccessor245
has been loaded to the same address, and the class unload pic for this aconst
node is missing.
2CLTEXTCLLOAD Loader sun/reflect/DelegatingClassLoader(0x00000000F2091010)
3CLTEXTCLASS sun/reflect/GeneratedConstructorAccessor245(0x0000000000459000)
ifacmpne
in the above trace is processed in ificmpHelper
function, which generates a compare immediate instruction if the second child node is a constant value node and the value can be encoded into the instruction, rather than evaluating the second child node and generating a compare register instruction. I believe that the problem is that when it skips evaluating the second child node, it does not add class unload pic even if it is required. I am preparing the fix for it.
https://github.com/eclipse/omr/blob/1b204d4703fe87dab6ee438bd49fdbff273cb551/compiler/aarch64/codegen/ControlFlowEvaluator.cpp#L229-L238
I opened https://github.com/eclipse/omr/pull/7206. 100x Grinder passed with this change. https://hyc-runtimes-jenkins.swg-devops.com/job/Grinder/36899/
I reviewed and merged https://github.com/eclipse/omr/pull/7206 . I am going to run DaaLoadTest jobs when the fix becomes available in nightly builds.
The OMR acceptance build is not good, there are crashes and assertions on aarch64.
https://openj9-jenkins.osuosl.org/job/Pipeline-OMR-Acceptance/621/ https://openj9-jenkins.osuosl.org/job/Test_openjdk21_j9_sanity.functional_aarch64_linux_OMR_testList_0/57
OpenJ9 also changed since the last nighty build started, where aarch64 testing was fine. https://github.com/eclipse-openj9/openj9/compare/0ce57acd02b...52a09039db7
Started new testing on the openj9 changes to confirm if they are good. https://openj9-jenkins.osuosl.org/job/Pipeline-Build-Test-JDK21/177/
Looks like the cause is the openj9 change, opened https://github.com/eclipse-openj9/openj9/issues/18626
I promoted the OMR change, it will be in the nightly builds.
I think we can close this issue now. I ran DaaLoadTest_all_special_5m_22 with Java 8 and 11, 80 times each, with nightly builds that contain the fix https://github.com/eclipse/omr/pull/7206. I got no failures.
Nightly builds:
Test jobs:
Thank you for your investigation and fix, @Akira1Saitoh !
One more comment. The class data are allocated at addresses above the first 32-bit space on AArch64 macOS, and you cannot embed those addresses as immediate values in the compare instruction. That is why we have seen this failure on AArch64 Linux but not on macOS.
https://openj9-jenkins.osuosl.org/job/Test_openjdk8_j9_special.system_aarch64_linux_Personal_testList_4/76 DaaLoadTest_daa2_special_5m_22
-XX:+UseCompressedOops -Xjit -Xgcpolicy:gencon -Xaggressive