JDK8 Assertion Failed in Structure.cpp: region->numSubNodes() == 1 (VMState: 0x000509ff)
connglli opened this issue · 7 comments
Java -version output
openjdk version "1.8.0_342-internal"
OpenJDK Runtime Environment (build 1.8.0_342-internal-_2022_06_10_15_18-b00)
Eclipse OpenJ9 VM (build master-3d06b2f9c, JRE 1.8.0 Linux amd64-64-Bit Compressed References 20220610_000000 (JIT enabled, AOT enabled)
OpenJ9 - 3d06b2f9c
OMR - cf8ddbd1a
JCL - 2bb179375a based on jdk8u342-b05)
Summary of problem
The following Test.java, which is reduced by us, crashes OpenJ9's JIT compiler
class Test {
public static void main(String[] strArr) {
for (; ; ) {
int ax$19 = 0x00018000;
int ax$16 = -10;
String ax$15 = "67672609451.86232";
for (int ax$18 = 0; ax$18 < ax$19; ax$18++)
for (int ax$17 = 0; ax$17 < ax$16; ax$17++) ax$15 += "x";
}
}
}Diagnostic files
By issuing
$ java -Xmx1G Test
the following crash log is given:
Assertion failed at /root/hostdir/openj9-openjdk-jdk8/omr/compiler/optimizer/Structure.cpp:725: region->numSubNodes() == 1
VMState: 0x000509ff
removeUnconditionalExit: all successors of region 0x7f0ca30f3eb0 entry are outside region, but there are additional sub-nodes
compiling Test.main([Ljava/lang/String;)V at level: warm
#0: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7ab6d5) [0x7f0cba9636d5]
#1: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7b69c0) [0x7f0cba96e9c0]
#2: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x46de64) [0x7f0cba625e64]
#3: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x46f61d) [0x7f0cba62761d]
#4: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6e8c1c) [0x7f0cba8a0c1c]
#5: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6e9f92) [0x7f0cba8a1f92]
#6: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6ea378) [0x7f0cba8a2378]
#7: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6ea73a) [0x7f0cba8a273a]
#8: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7868d3) [0x7f0cba93e8d3]
#9: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x2c3864) [0x7f0cba47b864]
#10: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7983fa) [0x7f0cba9503fa]
#11: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x635456) [0x7f0cba7ed456]
#12: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6359d9) [0x7f0cba7ed9d9]
#13: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x636d8b) [0x7f0cba7eed8b]
#14: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x42ba25) [0x7f0cba5e3a25]
#15: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x121e6a) [0x7f0cba2d9e6a]
#16: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x122c73) [0x7f0cba2dac73]
#17: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9prt29.so(+0x29c53) [0x7f0cbb9fac53]
#18: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x120a69) [0x7f0cba2d8a69]
#19: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x1210d7) [0x7f0cba2d90d7]
#20: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x11fdab) [0x7f0cba2d7dab]
#21: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x12009a) [0x7f0cba2d809a]
#22: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x120162) [0x7f0cba2d8162]
#23: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9prt29.so(+0x29c53) [0x7f0cbb9fac53]
#24: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x1205a2) [0x7f0cba2d85a2]
#25: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9thr29.so(+0xf2b2) [0x7f0cbbbbd2b2]
#26: /lib/x86_64-linux-gnu/libpthread.so.0(+0x8609) [0x7f0cbbe63609]
#27: /lib/x86_64-linux-gnu/libc.so.6(clone+0x43) [0x7f0cbbfa3133]
#0: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7ab6d5) [0x7f0cba9636d5]
#1: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7b69c0) [0x7f0cba96e9c0]
#2: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x1125d9) [0x7f0cba2ca5d9]
#3: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9prt29.so(+0x2911a) [0x7f0cbb9fa11a]
#4: /lib/x86_64-linux-gnu/libpthread.so.0(+0x14420) [0x7f0cbbe6f420]
#5: /lib/x86_64-linux-gnu/libc.so.6(gsignal+0xcb) [0x7f0cbbec700b]
#6: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x46f597) [0x7f0cba627597]
#7: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x46f622) [0x7f0cba627622]
#8: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6e8c1c) [0x7f0cba8a0c1c]
#9: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6e9f92) [0x7f0cba8a1f92]
#10: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6ea378) [0x7f0cba8a2378]
#11: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6ea73a) [0x7f0cba8a273a]
#12: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7868d3) [0x7f0cba93e8d3]
#13: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x2c3864) [0x7f0cba47b864]
#14: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7983fa) [0x7f0cba9503fa]
#15: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x635456) [0x7f0cba7ed456]
#16: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6359d9) [0x7f0cba7ed9d9]
#17: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x636d8b) [0x7f0cba7eed8b]
#18: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x42ba25) [0x7f0cba5e3a25]
#19: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x121e6a) [0x7f0cba2d9e6a]
#20: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x122c73) [0x7f0cba2dac73]
#21: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9prt29.so(+0x29c53) [0x7f0cbb9fac53]
#22: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x120a69) [0x7f0cba2d8a69]
#23: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x1210d7) [0x7f0cba2d90d7]
#24: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x11fdab) [0x7f0cba2d7dab]
#25: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x12009a) [0x7f0cba2d809a]
#26: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x120162) [0x7f0cba2d8162]
#27: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9prt29.so(+0x29c53) [0x7f0cbb9fac53]
#28: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x1205a2) [0x7f0cba2d85a2]
#29: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9thr29.so(+0xf2b2) [0x7f0cbbbbd2b2]
Unhandled exception
Type=Unhandled trap vmState=0x000509ff
J9Generic_Signal_Number=00000108 Signal_Number=00000005 Error_Value=00000000 Signal_Code=fffffffa
Handler1=00007F0CBBC11020 Handler2=00007F0CBB9F9EF0
RDI=0000000000000002 RSI=00007F0CB8665010 RAX=0000000000000000 RBX=0000000000000000
RCX=00007F0CBBEC700B RDX=0000000000000000 R8=0000000000000000 R9=00007F0CB8665010
R10=0000000000000008 R11=0000000000000246 R12=00007F0CA30F3F80 R13=00007F0CA30F4740
R14=00007F0CA30F3F80 R15=0000000000000000
RIP=00007F0CBBEC700B GS=0000 FS=0000 RSP=00007F0CB8665010
EFlags=0000000000000246 CS=0033 RBP=00007F0CA30F3EB0 ERR=0000000000000000
TRAPNO=0000000000000000 OLDMASK=0000000000000000 CR2=0000000000000000
xmm0 ffffffffffffffff (f: 4294967296.000000, d: -nan)
xmm1 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm2 000000000000ff00 (f: 65280.000000, d: 3.225261e-319)
xmm3 00007f0cb8664ae0 (f: 3093711616.000000, d: 6.901732e-310)
xmm4 4000000000000000 (f: 0.000000, d: 2.000000e+00)
xmm5 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm6 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm7 00007f0cb866fef0 (f: 3093757696.000000, d: 6.901732e-310)
xmm8 6f6e6e612f3c000a (f: 792461312.000000, d: 5.767205e+228)
xmm9 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm10 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm11 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm12 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm13 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm14 0000000000000000 (f: 0.000000, d: 0.000000e+00)
xmm15 0000000000000000 (f: 0.000000, d: 0.000000e+00)
Module=/lib/x86_64-linux-gnu/libc.so.6
Module_base_address=00007F0CBBE84000 Symbol=gsignal
Symbol_address=00007F0CBBEC6F40
Method_being_compiled=Test.main([Ljava/lang/String;)V
Target=2_90_20220610_000000 (Linux 5.4.0-117-generic)
CPU=amd64 (128 logical CPUs) (0x3ee84d8000 RAM)
----------- Stack Backtrace -----------
gsignal+0xcb (0x00007F0CBBEC700B [libc.so.6+0x4300b])
_ZN2TR4trapEv+0x47 (0x00007F0CBA627597 [libj9jit29.so+0x46f597])
(0x00007F0CBA627622 [libj9jit29.so+0x46f622])
_ZN18TR_RegionStructure14ExitExtraction18moveNodeIntoParentEP24TR_StructureSubGraphNodePS_S3_+0x4dc (0x00007F0CBA8A0C1C [libj9jit29.so+0x6e8c1c])
_ZN18TR_RegionStructure14ExitExtraction16extractStructureEP12TR_Structure+0x162 (0x00007F0CBA8A1F92 [libj9jit29.so+0x6e9f92])
_ZN18TR_RegionStructure14ExitExtraction25extractUnconditionalExitsERKN2TR4listIPNS1_5BlockERNS1_6RegionEEE+0xe8 (0x00007F0CBA8A2378 [libj9jit29.so+0x6ea378])
_ZN18TR_RegionStructure25extractUnconditionalExitsEPN2TR11CompilationERKNS0_4listIPNS0_5BlockERNS0_6RegionEEE+0x1aa (0x00007F0CBA8A273A [libj9jit29.so+0x6ea73a])
_ZN3OMR16ValuePropagation24doDelayedTransformationsEv+0x653 (0x00007F0CBA93E8D3 [libj9jit29.so+0x7868d3])
_ZN2J916ValuePropagation24doDelayedTransformationsEv+0x484 (0x00007F0CBA47B864 [libj9jit29.so+0x2c3864])
_ZN2TR21LocalValuePropagation19postPerformOnBlocksEv+0xa (0x00007F0CBA9503FA [libj9jit29.so+0x7983fa])
_ZN3OMR9Optimizer19performOptimizationEPK20OptimizationStrategyiii+0x776 (0x00007F0CBA7ED456 [libj9jit29.so+0x635456])
_ZN3OMR9Optimizer19performOptimizationEPK20OptimizationStrategyiii+0xcf9 (0x00007F0CBA7ED9D9 [libj9jit29.so+0x6359d9])
_ZN3OMR9Optimizer8optimizeEv+0x1db (0x00007F0CBA7EED8B [libj9jit29.so+0x636d8b])
_ZN3OMR11Compilation7compileEv+0x925 (0x00007F0CBA5E3A25 [libj9jit29.so+0x42ba25])
_ZN2TR28CompilationInfoPerThreadBase7compileEP10J9VMThreadPNS_11CompilationEP17TR_ResolvedMethodR11TR_J9VMBaseP19TR_OptimizationPlanRKNS_16SegmentAllocatorE+0x4fa (0x00007F0CBA2D9E6A [libj9jit29.so+0x121e6a])
_ZN2TR28CompilationInfoPerThreadBase14wrappedCompileEP13J9PortLibraryPv+0x323 (0x00007F0CBA2DAC73 [libj9jit29.so+0x122c73])
omrsig_protect+0x1e3 (0x00007F0CBB9FAC53 [libj9prt29.so+0x29c53])
_ZN2TR28CompilationInfoPerThreadBase7compileEP10J9VMThreadP21TR_MethodToBeCompiledRN2J917J9SegmentProviderE+0x309 (0x00007F0CBA2D8A69 [libj9jit29.so+0x120a69])
_ZN2TR24CompilationInfoPerThread12processEntryER21TR_MethodToBeCompiledRN2J917J9SegmentProviderE+0x207 (0x00007F0CBA2D90D7 [libj9jit29.so+0x1210d7])
_ZN2TR24CompilationInfoPerThread14processEntriesEv+0x38b (0x00007F0CBA2D7DAB [libj9jit29.so+0x11fdab])
_ZN2TR24CompilationInfoPerThread3runEv+0x2a (0x00007F0CBA2D809A [libj9jit29.so+0x12009a])
_Z30protectedCompilationThreadProcP13J9PortLibraryPN2TR24CompilationInfoPerThreadE+0x82 (0x00007F0CBA2D8162 [libj9jit29.so+0x120162])
omrsig_protect+0x1e3 (0x00007F0CBB9FAC53 [libj9prt29.so+0x29c53])
_Z21compilationThreadProcPv+0x1d2 (0x00007F0CBA2D85A2 [libj9jit29.so+0x1205a2])
thread_wrapper+0x162 (0x00007F0CBBBBD2B2 [libj9thr29.so+0xf2b2])
start_thread+0xd9 (0x00007F0CBBE63609 [libpthread.so.0+0x8609])
clone+0x43 (0x00007F0CBBFA3133 [libc.so.6+0x11f133])
---------------------------------------
JVMDUMP039I Processing dump event "gpf", detail "" at 2022/06/15 17:31:34 - please wait.
JVMDUMP032I JVM requested System dump using '/zdata/congli/ax-exp/ax-eval/2-ax-only/71.openj9/mutant/red/core.20220615.173134.1254692.0001.dmp' in response to an event
JVMDUMP010I System dump written to /zdata/congli/ax-exp/ax-eval/2-ax-only/71.openj9/mutant/red/core.20220615.173134.1254692.0001.dmp
JVMDUMP032I JVM requested Java dump using '/zdata/congli/ax-exp/ax-eval/2-ax-only/71.openj9/mutant/red/javacore.20220615.173134.1254692.0002.txt' in response to an event
JVMDUMP010I Java dump written to /zdata/congli/ax-exp/ax-eval/2-ax-only/71.openj9/mutant/red/javacore.20220615.173134.1254692.0002.txt
JVMDUMP032I JVM requested Snap dump using '/zdata/congli/ax-exp/ax-eval/2-ax-only/71.openj9/mutant/red/Snap.20220615.173134.1254692.0003.trc' in response to an event
JVMDUMP010I Snap dump written to /zdata/congli/ax-exp/ax-eval/2-ax-only/71.openj9/mutant/red/Snap.20220615.173134.1254692.0003.trc
JVMDUMP032I JVM requested JIT dump using '/zdata/congli/ax-exp/ax-eval/2-ax-only/71.openj9/mutant/red/jitdump.20220615.173134.1254692.0004.dmp' in response to an event
JVMDUMP051I JIT dump occurred in 'JIT Compilation Thread-000' thread 0x0000000000051900
JVMDUMP049I JIT dump notified all waiting threads of the current method to be compiled
JVMDUMP054I JIT dump is tracing the IL of the method on the crashed compilation thread
JVMDUMP048I JIT dump method being compiled is an ordinary method
JVMDUMP053I JIT dump is recompiling Test.main([Ljava/lang/String;)V
Assertion failed at /root/hostdir/openj9-openjdk-jdk8/omr/compiler/optimizer/Structure.cpp:725: region->numSubNodes() == 1
VMState: 0x000509ff
removeUnconditionalExit: all successors of region 0x7f0ca0a13380 entry are outside region, but there are additional sub-nodes
compiling Test.main([Ljava/lang/String;)V at level: warm
#0: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7ab6d5) [0x7f0cba9636d5]
#1: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7b69c0) [0x7f0cba96e9c0]
#2: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x46de64) [0x7f0cba625e64]
#3: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x46f61d) [0x7f0cba62761d]
#4: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6e8c1c) [0x7f0cba8a0c1c]
#5: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6e9f92) [0x7f0cba8a1f92]
#6: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6ea378) [0x7f0cba8a2378]
#7: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6ea73a) [0x7f0cba8a273a]
#8: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7868d3) [0x7f0cba93e8d3]
#9: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x2c3864) [0x7f0cba47b864]
#10: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x7983fa) [0x7f0cba9503fa]
#11: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x635456) [0x7f0cba7ed456]
#12: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x6359d9) [0x7f0cba7ed9d9]
#13: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x636d8b) [0x7f0cba7eed8b]
#14: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x42ba25) [0x7f0cba5e3a25]
#15: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x121e6a) [0x7f0cba2d9e6a]
#16: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x122c73) [0x7f0cba2dac73]
#17: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9prt29.so(+0x29c53) [0x7f0cbb9fac53]
#18: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x120b7a) [0x7f0cba2d8b7a]
#19: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x1210d7) [0x7f0cba2d90d7]
#20: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x11fdab) [0x7f0cba2d7dab]
#21: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x12009a) [0x7f0cba2d809a]
#22: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x120162) [0x7f0cba2d8162]
#23: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9prt29.so(+0x29c53) [0x7f0cbb9fac53]
#24: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9jit29.so(+0x1205a2) [0x7f0cba2d85a2]
#25: /zdata/congli/OpenJ9/jdk8/jre/lib/amd64/default/libj9thr29.so(+0xf2b2) [0x7f0cbbbbd2b2]
#26: /lib/x86_64-linux-gnu/libpthread.so.0(+0x8609) [0x7f0cbbe63609]
#27: /lib/x86_64-linux-gnu/libc.so.6(clone+0x43) [0x7f0cbbfa3133]
JVMDUMP052I JIT dump recursive crash occurred on diagnostic thread
JVMDUMP010I JIT dump written to /zdata/congli/ax-exp/ax-eval/2-ax-only/71.openj9/mutant/red/jitdump.20220615.173134.1254692.0004.dmp
JVMDUMP013I Processed dump event "gpf", detail "".
Please also check openj9-bug-71.tar.gz for all the logs (jitdump, snap, etc.), the test (Test.java, Test.class), and the unreduced test (Test.java.orig).
Notice
The given Test.java (which is reduced by us) is always reproducible for us. If it is not reproducible for you, please use Test.java.orig in the above link.
vmState [0x509ff]: {J9VMSTATE_JIT} {localValuePropagation}
The reduced case isn't failing for me, and neither is the full test case.
@0xdaryl fyi
We won't be able to get to the bottom of this for 0.35. Moving to 0.36.
Moving to 0.38.
@hzongaro, this failure occurred during local VP. Could you have a look in the 0.38 timeframe please?
Here's the current status of the investigation of this problem:
From jitdump.20220615.173134.1254692.0004.dmp in openj9-bug-71.tar.gz, prior to local value propagation, the structure for the method looks like this, in part:
2 [0x7f0ca0a13c10] Natural loop
Subgraph: (* = exit edge)
(0x7f0ca0a13ce0:0x7f0ca0a129b0)2 --> 8(0x7f0ca0a13e40) 11(0x7f0ca0a13d70)
(0x7f0ca0a13d70:0x7f0ca0a126b0)11 --> 4(0x7f0ca0a13f20)
(0x7f0ca0a13f20:0x7f0ca0a13380)4 --> 8(0x7f0ca0a13e40)
(0x7f0ca0a13e40:0x7f0ca0a12770)8 --> 2(0x7f0ca0a13ce0)
2 [0x7f0ca0a129b0] Block
11 [0x7f0ca0a126b0] Block
4 [0x7f0ca0a13380] Improper region
Subgraph: (* = exit edge)
(0x7f0ca0a13450:0x7f0ca0a128f0)4 --> 6(0x7f0ca0a13080) 14(0x7f0ca0a135b0)
(0x7f0ca0a13780:0x7f0ca0a127d0)7 --> 3(0x7f0ca0a13850)
(0x7f0ca0a13850:0x7f0ca0a12950)3 --> 8(0x7f0ca0a139b0)* 4(0x7f0ca0a13450)
(0x7f0ca0a135b0:0x7f0ca0a12ad0)14 --> 19(0x7f0ca0a13af0) 8(0x7f0ca0a139b0)*
(0x7f0ca0a13af0:0x7f0ca0a12530)19 --> 6(0x7f0ca0a13080)
(0x7f0ca0a13080:0x7f0ca0a12830)6 --> 5(0x7f0ca0a13160)
(0x7f0ca0a13160:0x7f0ca0a12890)5 --> 6(0x7f0ca0a13080) 7(0x7f0ca0a13780)
Exit edges:
(0x7f0ca0a13850)3 -->8
(0x7f0ca0a135b0)14 -->8
4 [0x7f0ca0a128f0] Block
7 [0x7f0ca0a127d0] Block
3 [0x7f0ca0a12950] Block
14 [0x7f0ca0a12ad0] Natural loop
Subgraph: (* = exit edge)
(0x7f0ca0a12ba0:0x7f0ca0a125f0)14 --> 16(0x7f0ca0a12d10) 8(0x7f0ca0a12c30)*
(0x7f0ca0a12d10:0x7f0ca0a12590)16 --> 19(0x7f0ca0a12e40)* 14(0x7f0ca0a12ba0)
Exit edges:
(0x7f0ca0a12d10)16 -->19
(0x7f0ca0a12ba0)14 -->8
14 [0x7f0ca0a125f0] Block
16 [0x7f0ca0a12590] Block
19 [0x7f0ca0a12530] Block
6 [0x7f0ca0a12830] Block
5 [0x7f0ca0a12890] Block
8 [0x7f0ca0a12770] Block
The branch from block 4 to block 6 is a conditional branch that is always false, and local VP removes it. During OMR::ValuePropagation::doDelayedTransformations, the edge from 4 to 6 is removed, and the each from 14 to 19 is also removed.
[ 66] O^O VALUE PROPAGATION: Removing unreachable block_19 at [00007F0CA0A8D6A0]
Removing unreachable edge from 4 to 6
Removing unreachable edge from 2 to 8
That leaves 4->14->8, where the edge 14->8 is an exit from the region, and unreachable blocks 6, 5, 7 and 3 in the CFG. Block 6 is not yet removed, as there is still the edge 5->6.
Later in doDelayedTransformations, there is a call to TR_RegionStructure::extractUnconditionalExits. It takes the blocks that are unconditionally exiting (blocks 14 and 4) from region 4 and places them in the parent, loop 2:
[ 67] O^O STRUCTURE: Moving unconditional exit node 14 from region 4:00007F0CA0A13380 into parent 2:00007F0CA0A13C10
[ 68] O^O STRUCTURE: Moving unconditional exit node 4 from region 4:00007F0CA0A13380 into parent 2:00007F0CA0A13C10
But as node 4 is moved out of region 4 by TR_RegionStructure::ExitExtraction::moveNodeIntoParent, there is an assertion that checks that the region contains no more blocks. That assertion fails, as the region still contains the four unreachable blocks.
The two solutions that come to mind are:
- Call
removeUnreachableBlockson the CFG prior to the call toTR_RegionStructure::extractUnconditionalExits; or - Modify
TR_RegionStructure::extractUnconditionalExitsto be tolerant of the presence of unreachable blocks.
Moving to 0.40.
No further progress. Moving this to 0.43.