JDK-8086057 : Crash with "modified node is not on IGVN._worklist" when running with -XX:-SplitIfBlocks
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2015-06-09
  • Updated: 2016-05-26
  • Resolved: 2016-04-25
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 9
9 b120Fixed
Related Reports
Relates :  
Description
JDK 9-fastdebug b66 hit assertion when ran with "-Xcomp -XX:+BackgroundCompilation -XX:-SplitIfBlocks" options on Linux-x64 platform. 

Running next command give following result(hs_err_pid21754.log and replay_pid21754.log are attached): 
java -Xcomp -XX:+BackgroundCompilation -XX:-SplitIfBlocks
 739	Opaque1	=== _  1243  137  [[ 716 ]] 
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/phaseX.cpp:952
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/HUDSON/workspace/9-2-build-linux-amd64/jdk9/2755/hotspot/src/share/vm/opto/phaseX.cpp:952), pid=21754, tid=0x00007fc20771a700
#  assert(false) failed: modified node is not on IGVN._worklist
#
# JRE version: Java(TM) SE Runtime Environment (9.0-b66) (build 1.9.0-ea-fastdebug-b66)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (1.9.0-ea-fastdebug-b66 compiled mode linux-amd64 compressed oops)
# Core dump will be written. Default location: Core dumps may be processed with "/usr/share/apport/apport %p %s %c" (or dumping to /home/dmitry/bundles/jdk9/b66/fastdebug/bin/core.21754)
#
# An error report file with more information is saved as:
# /home/dmitry/bundles/jdk9/b66/fastdebug/bin/hs_err_pid21754.log
...


JDK 8u45-fastdebug not affected(not hit assertion with these options)
Comments
I'll fix this in 9 because the fix is very simple: The fastdebug VM crashes with "modified node is not on IGVN._worklist" because SuperWord::align_initial_loop_index() resets the input of the pre-loop Opaque1 node 'pre_opaq' without putting it on the IGVN worklist afterwards. This only shows up with -XX:-SplitIfBlocks because otherwise surrounding nodes are changed causing the OpagueNode to be put on the worklist. The method should use PhaseIterGVN::replace_input_of() which uses rehash_node_delayed() to ensure the modified node is put on the worklist. http://cr.openjdk.java.net/~thartmann/8086057/webrev.00/
21-04-2016

ILW=assert in compilation, bailout compilation in product, none = MLH= P4
18-06-2015