JDK-8265391 : assert(is_reference(type)) failed: must be reference type
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 17
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2021-04-16
  • Updated: 2021-06-14
  • Resolved: 2021-06-14
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
17Resolved
Related Reports
Duplicate :  
Relates :  
Relates :  
Description
The following tests fail when testing the working patch for JDK-6824466 in -Xcomp:
   https://github.com/mlchung/jdk/tree/method-invoke-4

The fix for JDK-6824466 replaces the core reflection implementation to use method handles which can stress JIT compilation of method handles much more and shake out any issue.

test/jdk/java/lang/invoke/MethodHandlesGeneralTest.java
test/jdk/java/lang/reflect/Field/TestFieldReflectValueOf.java

Running with these VM flags (tier8-comp):

-Xcomp -XX:+CreateCoredumpOnCrash -ea -esa -XX:CompileThreshold=100 -XX:+UnlockExperimentalVMOptions -server -XX:-TieredCompilation

#  assert(is_reference(type)) failed: must be reference type

Current thread (0x00007fdce080be20):  JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=23555, stack(0x00007000016c3000,0x00007000017c3000)]


Current CompileTask:
C2:  12490 3014    b        jdk.internal.reflect.FieldAccessorImpl_S$$4/0x000000032f0c2800::setShort (10 bytes)

Stack: [0x00007000016c3000,0x00007000017c3000],  sp=0x00007000017c07a0,  free space=1013k
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.dylib+0x1214c6c]  VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x6dc
V  [libjvm.dylib+0x121527b]  VMError::report_and_die(Thread*, void*, char const*, int, char const*, char const*, __va_list_tag*)+0x3b
V  [libjvm.dylib+0x61b6bd]  report_vm_error(char const*, int, char const*, char const*, ...)+0xdd
V  [libjvm.dylib+0x54607d]  ciTypeFlow::StateVector::load_local_object(int)+0x13d
V  [libjvm.dylib+0x544de0]  ciTypeFlow::StateVector::apply_one_bytecode(ciBytecodeStream*)+0x750
V  [libjvm.dylib+0x541fc4]  ciTypeFlow::flow_block(ciTypeFlow::Block*, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)+0x374
V  [libjvm.dylib+0x54c38f]  ciTypeFlow::df_flow_types(ciTypeFlow::Block*, bool, ciTypeFlow::StateVector*, ciTypeFlow::JsrSet*)+0x40f
V  [libjvm.dylib+0x54c770]  ciTypeFlow::flow_types()+0x1b0
V  [libjvm.dylib+0x54d185]  ciTypeFlow::do_flow()+0x95
V  [libjvm.dylib+0x510f0e]  ciMethod::get_flow_analysis()+0x5e
V  [libjvm.dylib+0x398fad]  InlineTree::check_can_parse(ciMethod*)+0x9d
V  [libjvm.dylib+0x4a7dd8]  CallGenerator::for_inline(ciMethod*, float)+0x18
V  [libjvm.dylib+0x5bbf7a]  Compile::Compile(ciEnv*, ciMethod*, int, bool, bool, bool, bool, DirectiveSet*)+0x11da
V  [libjvm.dylib+0x4a534b]  C2Compiler::compile_method(ciEnv*, ciMethod*, int, bool, DirectiveSet*)+0x10b
V  [libjvm.dylib+0x5d8f51]  CompileBroker::invoke_compiler_on_method(CompileTask*)+0x9b1
V  [libjvm.dylib+0x5d8382]  CompileBroker::compiler_thread_loop()+0x322
V  [libjvm.dylib+0x116ea8c]  JavaThread::thread_main_inner()+0x28c
V  [libjvm.dylib+0x116e7ad]  JavaThread::run()+0x2ad
V  [libjvm.dylib+0x116b5b7]  Thread::call_run()+0x177
V  [libjvm.dylib+0xe4f57f]  thread_native_entry(Thread*)+0x15f
C  [libsystem_pthread.dylib+0x6109]  _pthread_start+0x94
C  [libsystem_pthread.dylib+0x1b8b]  thread_start+0xf