JDK-8260637 : Shenandoah: assert(_base == Tuple) failure during C2 compilation
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 8-shenandoah,11.0.9,16,17
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2021-01-29
  • Updated: 2021-03-10
  • Resolved: 2021-02-23
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 17
17 b11Fixed
Related Reports
Relates :  
Relates :  
Description
$ CONF=linux-x86-server-fastdebug make clean images run-test TEST=java/net/httpclient/http2/HpackCircularBufferDriver.java TEST_VM_OPTS="-XX:+UseShenandoahGC"

#  Internal Error (/home/shade/trunks/jdk/src/hotspot/share/opto/type.hpp:1661), pid=615876, tid=615890
#  assert(_base == Tuple) failed: Not a Tuple
#
# JRE version: OpenJDK Runtime Environment (17.0) (fastdebug build 17-internal+0-adhoc.shade.jdk)
# Java VM: OpenJDK Server VM (fastdebug 17-internal+0-adhoc.shade.jdk, mixed mode, tiered, shenandoah gc, linux-x86)
# Problematic frame:
# V  [libjvm.so+0x11f1aa6]  ProjNode::proj_type(Type const*) const [clone .part.0]+0x26
#

Current CompileTask:
C2:   1429  500       4       jdk.internal.net.http.hpack.CircularBufferTest::queueOnce (221 bytes)

Stack: [0xc292e000,0xc29af000],  sp=0xc29ac310,  free space=504k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x123fee6]  ProjNode::proj_type(Type const*) const [clone .part.0]+0x26
V  [libjvm.so+0x1371468]  PhaseIterGVN::transform_old(Node*)+0x4c8
V  [libjvm.so+0x136983b]  PhaseIterGVN::optimize()+0x28b
V  [libjvm.so+0x90d1c2]  PhaseIdealLoop::optimize(PhaseIterGVN&, LoopOptsMode)+0x782
V  [libjvm.so+0x1560012]  ShenandoahBarrierC2Support::expand(Compile*, PhaseIterGVN&)+0x62
V  [libjvm.so+0x149f427]  ShenandoahBarrierSetC2::expand_barriers(Compile*, PhaseIterGVN&) const+0x17
V  [libjvm.so+0x909853]  Compile::Optimize()+0x12b3
V  [libjvm.so+0x90ae8e]  Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x136e
V  [libjvm.so+0x74787a]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x26a
V  [libjvm.so+0x91d865]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x1665
V  [libjvm.so+0x91e7f9]  CompileBroker::compiler_thread_loop()+0x789
V  [libjvm.so+0x16c533b]  compiler_thread_entry(JavaThread*, Thread*)+0x2b
V  [libjvm.so+0x16cda28]  JavaThread::thread_main_inner()+0x5b8
V  [libjvm.so+0x16ce022]  JavaThread::run()+0x4b2
V  [libjvm.so+0x16d4e1e]  Thread::call_run()+0xfe
V  [libjvm.so+0x12e5b97]  thread_native_entry(Thread*)+0x137
C  [libpthread.so.0+0x8635]  start_thread+0xf5

The failure is intermittent. Bisection points to JDK-8254913 as first commit where the issue starts to (intermittently) manifest.
Comments
Changeset: 8a2f5890 Author: Roland Westrelin <roland@openjdk.org> Date: 2021-02-23 16:35:15 +0000 URL: https://git.openjdk.java.net/jdk/commit/8a2f5890
23-02-2021

Roland, can you please take a look? Note it seems to reproduce on x86_32, not on x86_64.
29-01-2021