JDK-8263587 : C2: JVMS not cloned when needs_clone_jvms() is true
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 16,17
  • Priority: P2
  • Status: Resolved
  • Resolution: Fixed
  • CPU: ppc
  • Submitted: 2021-03-15
  • Updated: 2021-10-06
  • Resolved: 2021-03-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 16 JDK 17
16.0.2Fixed 17 b14Fixed
Related Reports
Relates :  
Description
We have observed assertions and crashes on PPC64 when running compiler/c2/Test6603011.java:
assert((mcall == __null) || (mcall->jvms() == __null) || (mcall->jvms()->debug_start() + mcall->_jvmadj == mcall->tf()->domain()->cnt())) failed
Or SIGSEGV in product build:
# V  [libjvm.so+0x5a5bc4]  OopFlow::build_oop_map(Node*, int, PhaseRegAlloc*, int*)+0x494

JDK-8257211 has introduced new clone_jvms functions which miss needs_clone_jvms() checks.

The crashes occur on PPC64, because Call nodes like MachCallDynamicJava require the ConstantTableBase as additional input edge at mach_constant_base_node_input(). The different input edge layout requires JVMS cloning which is indicated by needs_clone_jvms().
Comments
Fix Request (16u) Crashes were observed on PPC64. Problem was introduced by JDK-8257211 in JDK16. Fix is simple and applies cleanly: https://github.com/openjdk/jdk16u/pull/86
17-03-2021

ILW = HMM = P2
16-03-2021

Changeset: 9c50b8e6 Author: Martin Doerr <mdoerr@openjdk.org> Date: 2021-03-16 10:17:33 +0000 URL: https://git.openjdk.java.net/jdk/commit/9c50b8e6
16-03-2021