JDK-8314233 : C2: assert(assertion_predicate_has_loop_opaque_node(iff)) failed: unexpected
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 22
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: linux
  • CPU: generic
  • Submitted: 2023-08-14
  • Updated: 2023-09-04
  • Resolved: 2023-08-16
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 22
22 b11Fixed
Related Reports
Relates :  
Relates :  
Description
The following test failed in the JDK22 CI:

applications/dacapo/Dacapo.java

Here's a log file snippet:

[2023-08-14T16:44:20.719572645Z] Gathering output for process 2923408
[2023-08-14T16:44:26.914356850Z] Waiting for completion for process 2923408
[2023-08-14T16:44:26.915487848Z] Waiting for completion finished for process 2923408
[stress.process.out] #
[stress.process.out] # A fatal error has been detected by the Java Runtime Environment:
[stress.process.out] #
[stress.process.out] #  Internal Error (/opt/mach5/mesos/work_dir/slaves/cd627e65-f015-4fb1-a1d2-b6c9b8127f98-S135058/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/3119c4a0-64a4-4064-a3b4-4497f656b3ab/runs/f39436ef-9705-4317-a63d-5bfeadc2260c/workspace/open/src/hotspot/share/opto/loopTransform.cpp:2086), pid=2919906, tid=2919924
[stress.process.out] #  assert(assertion_predicate_has_loop_opaque_node(iff)) failed: unexpected
[stress.process.out] #
[stress.process.out] # JRE version: Java(TM) SE Runtime Environment (22.0+11) (fastdebug build 22-ea+11-746)
[stress.process.out] # Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 22-ea+11-746, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-aarch64)
[stress.process.out] # Problematic frame:
[stress.process.out] # V  [libjvm.so+0x1146b34]  PhaseIdealLoop::initialize_assertion_predicates_for_peeled_loop(PredicateBlock const*, LoopNode*, int, Node*, Node*, IdealLoopTree*, unsigned int, Node_List const&)+0x544
[stress.process.out] #
[stress.process.out] # 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/cd627e65-f015-4fb1-a1d2-b6c9b8127f98-S9466/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/8cbeb22b-60b4-488d-b76b-e5b2686bfd68/runs/d4662e77-d3a1-4b3e-b987-88fac60d185b/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo_java/scratch/0/core.2919906)
[stress.process.out] #
[stress.process.out] Unsupported internal testing APIs have been used.
[stress.process.out] 
[stress.process.out] # An error report file with more information is saved as:
[stress.process.out] # /opt/mach5/mesos/work_dir/slaves/cd627e65-f015-4fb1-a1d2-b6c9b8127f98-S9466/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/8cbeb22b-60b4-488d-b76b-e5b2686bfd68/runs/d4662e77-d3a1-4b3e-b987-88fac60d185b/testoutput/test-support/jtreg_closed_test_hotspot_jtreg_applications_dacapo_Dacapo_java/scratch/0/hs_err_pid2919906.log
[stress.process.out] [thread 2922836 also had an error]

Here's the crashing thread's stack:

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

Current thread (0x0000ffff902a7510):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=2919924, stack(0x0000ffff64045000,0x0000ffff64243000) (2040K)]


Current CompileTask:
C2: 638586 54322       4       net.sourceforge.pmd.lang.java.metrics.impl.visitors.AtfdBaseVisitor::visit (46 bytes)

Stack: [0x0000ffff64045000,0x0000ffff64243000],  sp=0x0000ffff6423d6b0,  free space=2017k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x1146b34]  PhaseIdealLoop::initialize_assertion_predicates_for_peeled_loop(PredicateBlock const*, LoopNode*, int, Node*, Node*, IdealLoopTree*, unsigned int, Node_List const&)+0x544  (loopTransform.cpp:2086)
V  [libjvm.so+0x1147308]  PhaseIdealLoop::do_peeling(IdealLoopTree*, Node_List&)+0x7c8  (loopTransform.cpp:783)
V  [libjvm.so+0x1148d20]  PhaseIdealLoop::do_maximally_unroll(IdealLoopTree*, Node_List&)+0xb0  (loopTransform.cpp:2383)
V  [libjvm.so+0x117faec]  PhaseIdealLoop::build_and_optimize()+0x112c  (loopnode.cpp:4509)
V  [libjvm.so+0x90a9b4]  PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x2b4  (loopnode.hpp:1108)
V  [libjvm.so+0x9074a0]  Compile::Optimize()+0x650  (compile.cpp:2302)
V  [libjvm.so+0x909448]  Compile::Compile(ciEnv*, ciMethod*, int, Options, DirectiveSet*)+0x1508  (compile.cpp:850)
V  [libjvm.so+0x760810]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x110  (c2compiler.cpp:119)
V  [libjvm.so+0x915394]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x8e4  (compileBroker.cpp:2276)
V  [libjvm.so+0x915dc4]  CompileBroker::compiler_thread_loop()+0x594  (compileBroker.cpp:1944)
V  [libjvm.so+0xdaf26c]  JavaThread::thread_main_inner()+0xec  (javaThread.cpp:720)
V  [libjvm.so+0x160e904]  Thread::call_run()+0xb0  (thread.cpp:217)
V  [libjvm.so+0x1369498]  thread_native_entry(Thread*)+0x138  (os_linux.cpp:783)
C  [libpthread.so.0+0x7908]  start_thread+0x188


Comments
Changeset: 0b12480d Author: Christian Hagedorn <chagedorn@openjdk.org> Date: 2023-08-16 06:58:23 +0000 URL: https://git.openjdk.org/jdk/commit/0b12480de88dc1d2a8d7ca3aa2597be3df1ebde1
16-08-2023

ILW = Wrongly finding a non-template assertion predicate in loop peeling leading to a crash, only observable with intrinsics/single test in tier5, disable compilation of affected method = HLM = P3
15-08-2023

A pull request was submitted for review. URL: https://git.openjdk.org/jdk/pull/15290 Date: 2023-08-15 13:42:48 +0000
15-08-2023