JDK-8272976 : Modified runtime/InvocationTests/invokevirtualTests.java fail with new Vtable-based CHA
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 17,18
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2021-08-25
  • Updated: 2022-01-27
  • Resolved: 2022-01-27
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.
Other
tbdResolved
Related Reports
Relates :  
Description
This reproduces when JDK-8272970 is applied, which probably shakes out a different dependency graph than before. (EDIT: Oh wait, I probably misjudged this. That test is problemlisted by JDK-8271126, but the JDK-8272970 had a new name for the test config. The problemlist line mentions a confidential JDK-8271125, which I cannot see, so I am keeping this bug open in case this is caused by something else.).

This is the hunk from JDK-8272970 that needs to be applied:
  https://cr.openjdk.java.net/~shade/8272976/JDK-8272976-partial-bug.patch

This does not reproduce if I add  -XX:-UseVtableBasedCHA to the test configuration, so it is likely a regression from JDK-8266074.

$ CONF=linux-x86_64-server-fastdebug make run-test TEST=runtime/InvocationTests/invokevirtualTests.java

STDERR:
 stdout: [INFO: Class file version: major: 62; minor: 0
       Method access modifiers                            Call site location               Status
  #   A.m()        B.m()        C.m()              A     pkgA      B      pkgB     C     pkgC 
-------------------------------------------------------------------------------------------------
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/dependencies.cpp:1883
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/home/shade/trunks/jdk/src/hotspot/share/code/dependencies.cpp:1883), pid=3425343, tid=3425357
#  assert(Dependencies::is_concrete_root_method(fm, ctxk) == Dependencies::is_concrete_method(m, ctxk)) failed: mismatch

Current thread (0x00007ff340238ba0):  JavaThread "C2 CompilerThread0" daemon [_thread_in_vm, id=3425357, stack(0x00007ff3135fe000,0x00007ff3136ff000)]


Current CompileTask:
C2:  37554 13816    b  4       A::call (5 bytes)

Stack: [0x00007ff3135fe000,0x00007ff3136ff000],  sp=0x00007ff3136fb5e0,  free space=1013k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0xad8e6f]  Dependencies::find_unique_concrete_method(InstanceKlass*, Method*, Klass**)+0x13f
V  [libjvm.so+0xad94dd]  Dependencies::find_unique_concrete_method(InstanceKlass*, Method*, Klass*, Method*)+0x24d
V  [libjvm.so+0x90425b]  ciMethod::find_monomorphic_target(ciInstanceKlass*, ciInstanceKlass*, ciInstanceKlass*, bool)+0x1db
V  [libjvm.so+0xb689ae]  Compile::optimize_inlining(ciMethod*, ciInstanceKlass*, ciKlass*, ciMethod*, TypeOopPtr const*, bool) [clone .part.0]+0x17e
V  [libjvm.so+0xb6975f]  Compile::optimize_virtual_call(ciMethod*, ciInstanceKlass*, ciKlass*, ciMethod*, TypeOopPtr const*, bool, bool&, int&, bool)+0xef
V  [libjvm.so+0xb716db]  Parse::do_call()+0xf0b
V  [libjvm.so+0x15a8a2f]  Parse::do_one_bytecode()+0x11ff
V  [libjvm.so+0x1595719]  Parse::do_one_block()+0x619
V  [libjvm.so+0x1596647]  Parse::do_all_blocks()+0x127
V  [libjvm.so+0x159b64a]  Parse::Parse(JVMState*, ciMethod*, float)+0xb8a

Comments
ILW = MMM = P3
25-08-2021