JDK-8256478 : C2 compilation fails with assert(t1->isa_long()) failed: Type must be a long
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 16
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2020-11-17
  • Updated: 2021-01-14
  • Resolved: 2020-11-18
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
16 b26Fixed
Related Reports
Relates :  
Description
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (t:/workspace/open/src/hotspot/share/opto/mulnode.cpp:1500), pid=332996, tid=1253884
#  assert(t1->isa_long()) failed: Type must be a long

Current CompileTask:
C2:  34934 11113 %     4       com.sun.crypto.provider.DESCrypt::cipherBlock @ 48 (302 bytes)

Stack: [0x00000046ef500000,0x00000046ef600000]
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [jvm.dll+0xae6071]  os::platform_print_native_stack+0xf1  (os_windows_x86.cpp:236)
V  [jvm.dll+0xd0c7f7]  VMError::report+0xfb7  (vmError.cpp:731)
V  [jvm.dll+0xd0e11e]  VMError::report_and_die+0x7de  (vmError.cpp:1537)
V  [jvm.dll+0xd0e834]  VMError::report_and_die+0x64  (vmError.cpp:1328)
V  [jvm.dll+0x4ba2f7]  report_vm_error+0x117  (debug.cpp:267)
V  [jvm.dll+0xa8ebf5]  RotateLeftNode::Ideal+0x205  (mulnode.cpp:1500)
V  [jvm.dll+0xb29126]  PhaseIterGVN::transform_old+0x2f6  (phaseX.cpp:1243)
V  [jvm.dll+0xb263c2]  PhaseIterGVN::optimize+0x2d2  (phaseX.cpp:1164)
V  [jvm.dll+0x480121]  PhaseIdealLoop::optimize+0x101  (loopnode.hpp:1041)
V  [jvm.dll+0x474beb]  Compile::Optimize+0xafb  (compile.cpp:2131)
V  [jvm.dll+0x471f1a]  Compile::Compile+0x140a  (compile.cpp:735)
V  [jvm.dll+0x3aac5c]  C2Compiler::compile_method+0x10c  (c2compiler.cpp:104)
V  [jvm.dll+0x48a8c0]  CompileBroker::invoke_compiler_on_method+0x8e0  (compileBroker.cpp:2319)
V  [jvm.dll+0x4882a8]  CompileBroker::compiler_thread_loop+0x458  (compileBroker.cpp:1993)
V  [jvm.dll+0xc9a717]  JavaThread::run+0x327  (thread.cpp:1780)
V  [jvm.dll+0xc918e4]  Thread::call_run+0x1b4  (thread.cpp:399)
V  [jvm.dll+0xae484e]  thread_native_entry+0x10e  (os_windows.cpp:561)
C  [ucrtbase.dll+0x21ffa]
C  [KERNEL32.DLL+0x17974]
C  [ntdll.dll+0x6a271]

Only happened on Windows. Code was introduced by JDK-8254872.
Comments
Changeset: 5bcf898b Author: Tobias Hartmann <thartmann@openjdk.org> Date: 2020-11-18 11:52:47 +0000 URL: https://github.com/openjdk/jdk/commit/5bcf898b
18-11-2020

0x00007fdbfe81db55 in RotateLeftNode::Ideal (this=0x7fdbcc12e050, phase=0x7fdbe5f32600, can_reshape=true) at /oracle/jdk/open/src/hotspot/share/opto/mulnode.cpp:1500 1500 assert(t1->isa_long(), "Type must be a long"); (rr) print t1 $1 = (const Type *) 0x7fdbcc02ab98 (rr) print t1->dump_on(tty) top$2 = void (rr) print this->dump(1) 529 ConI === 0 [[ 822 1152 821 ]] #int:5 1152 RotateLeft === _ 1 529 [[ 660 979 ]] #int !orig=[635] !jvms: DESCrypt::cipherBlock @ bci:231
17-11-2020

ILW = Assert during C2 compilation, intermittent with long running stress test, no workaround but disable compilation = HMM = P2
17-11-2020