JDK-8238756 : C2: assert(((n) == __null || !VerifyIterativeGVN || !((n)->is_dead()))) failed: can not use dead node
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 11,12,13,14,15
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2020-02-10
  • Updated: 2020-06-30
  • Resolved: 2020-02-13
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 11 JDK 13 JDK 14 JDK 15
11.0.8-oracleFixed 13.0.4Fixed 14.0.2Fixed 15 b11Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
Ran some tests with -XX:+VerifyIterativeGVN and hit the following assert:
#  Internal Error (open/src/hotspot/share/opto/node.hpp:411), pid=18949, tid=19027
#  assert(((n) == __null || !VerifyIterativeGVN || !((n)->is_dead()))) failed: can not use dead node

V  [libjvm.so+0x3d7ffc]  Node::set_req(unsigned int, Node*)+0x26c
V  [libjvm.so+0x11fbf99]  Node::replace_edge(Node*, Node*)+0x69
V  [libjvm.so+0x10430d0]  PhaseIdealLoop::try_move_store_after_loop(Node*) [clone .part.120]+0x4f0
V  [libjvm.so+0x1047e7b]  PhaseIdealLoop::split_if_with_blocks_post(Node*)+0x7ab
V  [libjvm.so+0x1048839]  PhaseIdealLoop::split_if_with_blocks(VectorSet&, Node_Stack&)+0x1f9
V  [libjvm.so+0x103fc7d]  PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0x10fd
V  [libjvm.so+0x875d1a]  PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x2ea

This reproduces with different programs. One example is dacapo:
$ java -XX:+VerifyIterativeGVN -jar dacapo-9.12-bach.jar avrora fop h2 jython luindex lusearch pmd sunflow xalan
Comments
Fix request (13u): The original change applies cleanly, passes tier1,tier2,tier3 tests.
05-06-2020

Fix Request (JDK 14.0.2) The patch fixes a graph verification problem in C2 that might lead to test failures and has already been backported to JDK 11u. The fix is low risk and applies cleanly to JDK 14.0.2. In addition to CI testing through all tiers in JDK 15 and 11u, additional testing will be executed in JDK 14.0.2 before pushing.
06-03-2020

Fix Request (11u) This fixes the assertion failure that might hide bugs and keeps codebases in sync (I see 11.0.8-oracle). Patch applies cleanly to 11u, one new test fails without the patch, both new tests pass with the patch. Patched JDK also passes tier{1,2,3} tests.
29-02-2020

The affected node is added by JDK-8189067 in 9.
28-02-2020

URL: https://hg.openjdk.java.net/jdk/jdk/rev/cd78b249e6a4 User: chagedorn Date: 2020-02-13 14:49:40 +0000
13-02-2020