-
Bug
-
Resolution: Fixed
-
P4
-
8-shenandoah, 11.0.9, 15, 16
-
b13
[You probably need JDK-8251526 to compile CTW in current jdk/jdk]
$ cd test/hotspot/jtreg/testlibrary/ctw
$ make
$ cd dist
$ wget https://repo1.maven.org/maven2/org/gridgain/gridgain-core/6.6.8-p1/gridgain-core-6.6.8-p1.jar
$ export JAVA_HOME=<point to fastdebug build>
$ JAVA_OPTIONS="-XX:+UseShenandoahGC" ./ctw.sh https://repo1.maven.org/maven2/org/gridgain/gridgain-core/6.6.8-p1/gridgain-core-6.6.8-p1.jar
# SIGSEGV (0xb) at pc=0x00007fa36cc148bb, pid=1666402, tid=1666484
#
# JRE version: OpenJDK Runtime Environment (16.0) (fastdebug build 16-internal+0-adhoc.shade.jdk-jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 16-internal+0-adhoc.shade.jdk-jdk, mixed mode, sharing, tiered, compressed oops, shenandoah gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x17078bb] PhaseIdealLoop::register_new_node(Node*, Node*)+0x6b
#
Current CompileTask:
C2: 30963 43589 !b 4 org.gridgain.grid.kernal.processors.cache.GridCacheEntryImpl::peek0 (607 bytes)
Stack: [0x00007fa236fe1000,0x00007fa2370e2000], sp=0x00007fa2370db840, free space=1002k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x17078bb] PhaseIdealLoop::register_new_node(Node*, Node*)+0x6b
V [libjvm.so+0x16d2b56] ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop*)+0xd76
V [libjvm.so+0x15f5774] ShenandoahBarrierSetC2::optimize_loops(PhaseIdealLoop*, LoopOptsMode, VectorSet&, Node_Stack&, Node_List&) const+0x44
V [libjvm.so+0x11daeeb] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0xf2b
V [libjvm.so+0x16c7e32] ShenandoahBarrierC2Support::expand(Compile*, PhaseIterGVN&)+0x202
V [libjvm.so+0x15f5643] ShenandoahBarrierSetC2::expand_barriers(Compile*, PhaseIterGVN&) const+0x13
V [libjvm.so+0x932038] Compile::Optimize()+0x10b8
V [libjvm.so+0x9336e0] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x1500
V [libjvm.so+0x780888] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x188
V [libjvm.so+0x941319] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xbe9
V [libjvm.so+0x941ec0] CompileBroker::compiler_thread_loop()+0x620
V [libjvm.so+0x184d16f] JavaThread::thread_main_inner()+0x23f
V [libjvm.so+0x1852634] Thread::call_run()+0x104
I believe that is because we are passing NULL ctrl to register_new_node after extracting projections here:
diff -r 493922f37d81 src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Thu Aug 13 00:20:42 2020 -0400
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Thu Aug 13 11:06:04 2020 +0200
@@ -1183,10 +1183,12 @@
continue;
}
CallProjections projs;
call->extract_projections(&projs, false, false);
+ assert(projs.catchall_catchproj != NULL, "Should be testing this?");
+
#ifdef ASSERT
VectorSet cloned;
#endif
Node* lrb_clone = lrb->clone();
phase->register_new_node(lrb_clone, projs.catchall_catchproj); // <--- passing NULL
This new assert reliably fails on the same test:
# Internal Error (/home/shade/trunks/jdk-jdk/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp:1188), pid=1669278, tid=1669324
# assert(projs.catchall_catchproj != __null) failed: Should be testing this?
#
# JRE version: OpenJDK Runtime Environment (16.0) (fastdebug build 16-internal+0-adhoc.shade.jdk-jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 16-internal+0-adhoc.shade.jdk-jdk, mixed mode, sharing, tiered, compressed oops, shenandoah gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x16d6a19] ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop*)+0x4b39
$ cd test/hotspot/jtreg/testlibrary/ctw
$ make
$ cd dist
$ wget https://repo1.maven.org/maven2/org/gridgain/gridgain-core/6.6.8-p1/gridgain-core-6.6.8-p1.jar
$ export JAVA_HOME=<point to fastdebug build>
$ JAVA_OPTIONS="-XX:+UseShenandoahGC" ./ctw.sh https://repo1.maven.org/maven2/org/gridgain/gridgain-core/6.6.8-p1/gridgain-core-6.6.8-p1.jar
# SIGSEGV (0xb) at pc=0x00007fa36cc148bb, pid=1666402, tid=1666484
#
# JRE version: OpenJDK Runtime Environment (16.0) (fastdebug build 16-internal+0-adhoc.shade.jdk-jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 16-internal+0-adhoc.shade.jdk-jdk, mixed mode, sharing, tiered, compressed oops, shenandoah gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x17078bb] PhaseIdealLoop::register_new_node(Node*, Node*)+0x6b
#
Current CompileTask:
C2: 30963 43589 !b 4 org.gridgain.grid.kernal.processors.cache.GridCacheEntryImpl::peek0 (607 bytes)
Stack: [0x00007fa236fe1000,0x00007fa2370e2000], sp=0x00007fa2370db840, free space=1002k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V [libjvm.so+0x17078bb] PhaseIdealLoop::register_new_node(Node*, Node*)+0x6b
V [libjvm.so+0x16d2b56] ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop*)+0xd76
V [libjvm.so+0x15f5774] ShenandoahBarrierSetC2::optimize_loops(PhaseIdealLoop*, LoopOptsMode, VectorSet&, Node_Stack&, Node_List&) const+0x44
V [libjvm.so+0x11daeeb] PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0xf2b
V [libjvm.so+0x16c7e32] ShenandoahBarrierC2Support::expand(Compile*, PhaseIterGVN&)+0x202
V [libjvm.so+0x15f5643] ShenandoahBarrierSetC2::expand_barriers(Compile*, PhaseIterGVN&) const+0x13
V [libjvm.so+0x932038] Compile::Optimize()+0x10b8
V [libjvm.so+0x9336e0] Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x1500
V [libjvm.so+0x780888] C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x188
V [libjvm.so+0x941319] CompileBroker::invoke_compiler_on_method(CompileTask*)+0xbe9
V [libjvm.so+0x941ec0] CompileBroker::compiler_thread_loop()+0x620
V [libjvm.so+0x184d16f] JavaThread::thread_main_inner()+0x23f
V [libjvm.so+0x1852634] Thread::call_run()+0x104
I believe that is because we are passing NULL ctrl to register_new_node after extracting projections here:
diff -r 493922f37d81 src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp
--- a/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Thu Aug 13 00:20:42 2020 -0400
+++ b/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp Thu Aug 13 11:06:04 2020 +0200
@@ -1183,10 +1183,12 @@
continue;
}
CallProjections projs;
call->extract_projections(&projs, false, false);
+ assert(projs.catchall_catchproj != NULL, "Should be testing this?");
+
#ifdef ASSERT
VectorSet cloned;
#endif
Node* lrb_clone = lrb->clone();
phase->register_new_node(lrb_clone, projs.catchall_catchproj); // <--- passing NULL
This new assert reliably fails on the same test:
# Internal Error (/home/shade/trunks/jdk-jdk/src/hotspot/share/gc/shenandoah/c2/shenandoahSupport.cpp:1188), pid=1669278, tid=1669324
# assert(projs.catchall_catchproj != __null) failed: Should be testing this?
#
# JRE version: OpenJDK Runtime Environment (16.0) (fastdebug build 16-internal+0-adhoc.shade.jdk-jdk)
# Java VM: OpenJDK 64-Bit Server VM (fastdebug 16-internal+0-adhoc.shade.jdk-jdk, mixed mode, sharing, tiered, compressed oops, shenandoah gc, linux-amd64)
# Problematic frame:
# V [libjvm.so+0x16d6a19] ShenandoahBarrierC2Support::pin_and_expand(PhaseIdealLoop*)+0x4b39
- relates to
-
JDK-8252296 Shenandoah: crash in CallNode::extract_projections
-
- Resolved
-