JDK-8298484 : tools/jdeprscan/tests/jdk/jdeprscan/TestRelease.java failed "assert(!failure) failed: Missed optimization opportunity in PhaseCCP"
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 21
  • Priority: P3
  • Status: Closed
  • Resolution: Cannot Reproduce
  • OS: linux
  • CPU: aarch64
  • Submitted: 2022-12-09
  • Updated: 2023-04-17
  • Resolved: 2023-01-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 21
21Resolved
Related Reports
Relates :  
Description
The following test failed in the JDK21 CI:

tools/jdeprscan/tests/jdk/jdeprscan/TestRelease.java

Here's a snippet from the log file:

----------stdout:(33/3974)----------

Missed optimization (PhaseCCP):
dist dump
---------------------------------------------
   1  4555  CheckCastPP  === _ 599  [[ 3406 ]]  #java/util/List:NotNull *  Interface:java/util/List:NotNull * !jvms: HashMap::putVal @ bci:59 (line 637) HashMap::put @ bci:9 (line 618) HashSet::add @ bci:8 (line 229) JavacProcessingEnvironment$ComputeAnnotationSet::addAnnotations @ bci:56 (line 1002) JavacProcessingEnvironment$ComputeAnnotationSet::scan @ bci:3 (line 1008) JavacProcessingEnvironment$ComputeAnnotationSet::scan @ bci:6 (line 969) ElementScanner6::scan @ bci:39 (line 138) JavacProcessingEnvironment$ComputeAnnotationSet::visitType @ bci:8 (line 987) JavacProcessingEnvironment$ComputeAnnotationSet::visitType @ bci:6 (line 969) Symbol$ClassSymbol::accept @ bci:3 (line 1573)
   1   598  CheckCastPP  === _ 1034  [[ 2260 3399 3398 3993 1285 892 891 2033 2709 3395 855 857 858 859 876 2724 861 862 864 878 1068 269 267 887 886 868 885 1060 869 884 3406 883 1991 882 272 879 870 871 872 264 1286 875 ]]  #java/util/List *  Interface:java/util/List * !jvms: List$3::hasNext @ bci:4 (line 465) Symbol::getTypeParameters @ bci:20 (line 745) Symbol$ClassSymbol::getTypeParameters @ bci:1 (line 1257) JavacProcessingEnvironment$ComputeAnnotationSet::visitType @ bci:2 (line 987) JavacProcessingEnvironment$ComputeAnnotationSet::visitType @ bci:6 (line 969) Symbol$ClassSymbol::accept @ bci:3 (line 1573)
   1  3403  Region  === 3403 1992 4553  [[ 3403 4554 3404 3997 3406 2261 ]]  !jvms: JavacProcessingEnvironment$ComputeAnnotationSet::addAnnotations @ bci:10 (line 1000) JavacProcessingEnvironment$ComputeAnnotationSet::scan @ bci:3 (line 1008) JavacProcessingEnvironment$ComputeAnnotationSet::scan @ bci:6 (line 969) ElementScanner6::scan @ bci:39 (line 138) JavacProcessingEnvironment$ComputeAnnotationSet::visitType @ bci:8 (line 987) JavacProcessingEnvironment$ComputeAnnotationSet::visitType @ bci:6 (line 969) Symbol$ClassSymbol::accept @ bci:3 (line 1573)
   0  3406  Phi  === 3403 598 4555  [[ 2261 ]]  #java/util/List *  Interface:java/util/List *
Current type:
java/util/List *
Optimized type:
java/util/List:NotNull *
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/phaseX.cpp:1852
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/opt/mach5/mesos/work_dir/slaves/0c72054a-24ab-4dbb-944f-97f9341a1b96-S151577/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/3cb0c0ac-0a87-4eeb-9c4a-866b5a5e0d49/runs/65721b5f-4cd4-48a1-9bd4-1b11e51533e9/workspace/open/src/hotspot/share/opto/phaseX.cpp:1852), pid=1186590, tid=1186614
#  assert(!failure) failed: Missed optimization opportunity in PhaseCCP
#
# JRE version: Java(TM) SE Runtime Environment (21.0+2) (fastdebug build 21-ea+2-LTS-10)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 21-ea+2-LTS-10, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
# Problematic frame:
# V  [libjvm.so+0x1572074]  PhaseCCP::verify_analyze(Unique_Node_List&)+0x3a4
#
# Core dump will be written. Default location: Core dumps may be processed with "/opt/core.sh %p" (or dumping to /opt/mach5/mesos/work_dir/slaves/91e16c40-06d4-468a-9fc3-7198a5bb7d5a-S33379/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/310c06ca-8392-417f-b3e5-fec7a4dd1a8f/runs/f8843709-dfd4-4312-bdcc-1f917cdf7ea5/testoutput/test-support/jtreg_open_test_langtools_tier1/scratch/3/core.1186590)
#
# An error report file with more information is saved as:
# /opt/mach5/mesos/work_dir/slaves/91e16c40-06d4-468a-9fc3-7198a5bb7d5a-S33379/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/310c06ca-8392-417f-b3e5-fec7a4dd1a8f/runs/f8843709-dfd4-4312-bdcc-1f917cdf7ea5/testoutput/test-support/jtreg_open_test_langtools_tier1/scratch/3/hs_err_pid1186590.log
[thread 1192282 also had an error]

------ Timeout during error reporting after 120 s. ------
# [ timer expired, abort... ]
----------System.out:(454/30720)----------


Here's the crashing thread's stack:

---------------  T H R E A D  ---------------

Current thread (0x0000fffdec411580):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=1186614, stack(0x0000fffdc2d10000,0x0000fffdc2f10000)]


Current CompileTask:
C2: 239098 14513       4       com.sun.tools.javac.code.Symbol$ClassSymbol::accept (9 bytes)

Stack: [0x0000fffdc2d10000,0x0000fffdc2f10000],  sp=0x0000fffdc2f0ab20,  free space=2026k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1572074]  PhaseCCP::verify_analyze(Unique_Node_List&)+0x3a4  (phaseX.cpp:1852)
V  [libjvm.so+0x1575fb0]  PhaseCCP::analyze()+0x490  (phaseX.cpp:1808)
V  [libjvm.so+0x9a219c]  Compile::Optimize()+0x4fc  (compile.cpp:2360)
V  [libjvm.so+0x9a535c]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x11cc  (compile.cpp:830)
V  [libjvm.so+0x7c44b8]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x1b4  (c2compiler.cpp:113)
V  [libjvm.so+0x9b1ba4]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0xa10  (compileBroker.cpp:2237)
V  [libjvm.so+0x9b2608]  CompileBroker::compiler_thread_loop()+0x5b8  (compileBroker.cpp:1916)
V  [libjvm.so+0xed1fb0]  JavaThread::thread_main_inner()+0x21c  (javaThread.cpp:709)
V  [libjvm.so+0x17d7558]  Thread::call_run()+0xf8  (thread.cpp:224)
V  [libjvm.so+0x14efdf4]  thread_native_entry(Thread*)+0x100  (os_linux.cpp:739)
C  [libpthread.so.0+0x7908]  start_thread+0x188


This failure started in jdk-21+2-10-tier4 and that build-ID includes
a single changeset:

JDK-8257197 Add additional verification code to PhaseCCP

I suspect that this is a regression caused by JDK-8257197
so I've labeled it as a regression and started this bug at P2.
Comments
Filed JDK-8299546 for the fuzzer report.
03-01-2023

The first report could not be reproduced but there was a second report found by fuzzing (a different problem though) which can reliably be reproduced. I'll close this bug as cannot reproduce and file a new bug for the problem found by fuzzing.
03-01-2023

Removing 'regression' label since the issue is that a new assert is revealing previously missed optimization opportunity, i.e., this is revealing an existing "issue".
09-12-2022

Verification code added by JDK-8257197 but this assert just reveals an existing problem/missed optimization opportunity.
09-12-2022

ILW = Debug assertion in CCP that a node could have a more precise type, harmless in product, single test, no workaround = MMH = P3
09-12-2022