JDK-8223363 : Bad node estimate assertion failure
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 11,13
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2019-05-05
  • Updated: 2022-03-11
  • Resolved: 2019-06-03
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
11.0.16-oracleFixed 13 b24Fixed 14Fixed
Related Reports
Relates :  
Relates :  
Relates :  
Relates :  
Description
While running Kitchensink test, hit this assertion multiple times on
multiple platforms:

[stress.process.out] #  assert(delta <= 2 * required) failed: Bad node estimate (actual: 734, request: 353)

Current thread (0x00007f34d0440800):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=3259, stack(0x00007f348b5fe000,0x00007f348b6ff000)]

Current CompileTask:
C2:1900484 81164    b        die.verwandlung.xmlspec::applyTemplates (2549 bytes)

Stack: [0x00007f348b5fe000,0x00007f348b6ff000],  sp=0x00007f348b6f92d0,  free space=1004k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1183b72]  AutoNodeBudget::~AutoNodeBudget()+0x1c2
V  [libjvm.so+0x1180a03]  IdealLoopTree::iteration_split(PhaseIdealLoop*, Node_List&)+0x1d3
V  [libjvm.so+0x1180858]  IdealLoopTree::iteration_split(PhaseIdealLoop*, Node_List&)+0x28
V  [libjvm.so+0x1180858]  IdealLoopTree::iteration_split(PhaseIdealLoop*, Node_List&)+0x28
V  [libjvm.so+0x11a3ce0]  PhaseIdealLoop::build_and_optimize(LoopOptsMode)+0xbd0
V  [libjvm.so+0x99d782]  PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x242
V  [libjvm.so+0x99a58f]  Compile::Optimize()+0x3cf
V  [libjvm.so+0x99c27a]  Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x103a
V  [libjvm.so+0x7de8ad]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0x10d
V  [libjvm.so+0x9a8a7d]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x46d
V  [libjvm.so+0x9a9a78]  CompileBroker::compiler_thread_loop()+0x3b8
V  [libjvm.so+0x168e03a]  JavaThread::thread_main_inner()+0x26a
V  [libjvm.so+0x1696677]  JavaThread::run()+0x227
V  [libjvm.so+0x16937a6]  Thread::call_run()+0xf6
V  [libjvm.so+0x13af01e]  thread_native_entry(Thread*)+0x10e

Comments
Fix Request (11u): Should get backported for parity with 11.0.16-oracle. Applies mostly clean. Review: https://github.com/openjdk/jdk11u-dev/pull/874 Nightly tests have passed.
10-03-2022

A pull request was submitted for review. URL: https://git.openjdk.java.net/jdk11u-dev/pull/874 Date: 2022-03-10 14:09:01 +0000
10-03-2022

URL: http://hg.openjdk.java.net/jdk/jdk/rev/ba171f871932 User: phedlin Date: 2019-06-03 09:11:25 +0000
03-06-2019

Note, JDK-8223911 has disabled the offending assert. Patric, please enable it back as you fix the original issue.
15-05-2019

See also JDK-8223502, Roland produced the regression test there.
14-05-2019

+DeoptimizeALot
06-05-2019

This code was added by JDK-8216137. Patric, please have a look.
06-05-2019

ILW = Assert during compilation (regression), with bigapps, no workaround (but disable loop opts or compilation of affected method) = HMM = P2
06-05-2019