JDK-8215488 : PhaseIdealLoop::verify() is broken.
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2018-12-17
  • Updated: 2018-12-17
  • Resolved: 2018-12-17
Related Reports
Duplicate :  
Description
Cannot use option "VerifyLoopOptimizations" without error.

Option -XX:+VerifyLoopOptimizations will render massive/numerous failures in the test-suite (or any run-test).

Not only does verify() fail, it also fails to report the failure, as in this sample:

Mismatched loop setting for:  3	Start	===  3  0  [[ 3  5  6  7  8  9  10 ]]  #{0:control, 1:abIO, 2:memory, 3:rawptr:BotPTR, 4:return_address, 5:java/util/ImmutableCollections$SetN$SetNIterator:NotNull:exact *}
We have it as: Loop: N0/N0  has_sfpt
Verify thinks: #
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f82d2efb517, pid=10874, tid=10886
#
# JRE version: Java(TM) SE Runtime Environment (12.0) (fastdebug build 12-internal+0-2018-12-13-1543443.phedlin.null)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 12-internal+0-2018-12-13-1543443.phedlin.null, mixed mode, sharing, tiered, compressed oops, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x123e517]  Node::in(unsigned int) const [clone .isra.43] [clone .constprop.257]+0x7
#
. . .

Comments
But has not been worked on for more than a year... Also, JDK-8173709 is not "a single bug", but a bunch of them. Perhaps we can start by making verify() robust enough to actually report problems.
17-12-2018

And yes, in it's current state VerifyLoopOptimizations is completely useless. Not only does it fail to report problems and crashes the VM, it also produces false positives. Feel free to pick it up ;-)
17-12-2018

This is a known issue. Closed as duplicate of JDK-8173709.
17-12-2018