JDK-8209511 : C2 asserts with UseSSE < 4 and AVX enabled: "Label was never bound to a location, but it was used as a jmp target'
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9,10,11,12
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2018-08-14
  • Updated: 2022-01-05
  • Resolved: 2018-08-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 11 JDK 12
11.0.3Fixed 12 b07Fixed
Related Reports
Relates :  
Relates :  
Description
The fix for https://bugs.openjdk.java.net/browse/JDK-8206075 introduce Label verification in debug builds which is hit by test compiler/cpuflags/TestSSE4Disabled.java	
on hosts with AVX enabled 

To reproduce just run 
'java -XX:UseSSE=3'
on the host with AVX enabled.


# 
# A fatal error has been detected by the Java Runtime Environment: 
# 
# Internal Error (/scratch/opt/mach5/mesos/work_dir/slaves/c4ee7e63-1ded-4e8c-9581-ce26f27e3af4-S583/frameworks/1735e8a2-a1db-478c-8104-60c8b0af87dd-0196/executors/bfb5e5b5-7919-4db9-859a-b6b4cc6c0146/runs/039eb18a-650b-429b-9d8b-93140313cbb1/workspace/open/src/hotspot/share/asm/assembler.hpp:164), pid=167733, tid=167811 
# assert(is_bound() || is_unused()) failed: Label was never bound to a location, but it was used as a jmp target 
# 
# JRE version: Java(TM) SE Runtime Environment (12.0+5) (fastdebug build 12-ea+5) 
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 12-ea+5, compiled mode, tiered, compressed oops, g1 gc, linux-amd64) 
# No core dump will be written. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again 
# 
# If you would like to submit a bug report, please visit: 
# http://bugreport.java.com/bugreport/crash.jsp 
# 
...

--------------- T H R E A D --------------- 

Current thread (0x00007f75b4683000): JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=167811, stack(0x00007f7588048000,0x00007f7588149000)] 


Current CompileTask: 
C2: 4269 2111 b 4 java.lang.StringUTF16::compress (20 bytes) 

Stack: [0x00007f7588048000,0x00007f7588149000], sp=0x00007f75881439f0, free space=1006k 
Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) 
V [libjvm.so+0x18a0547] VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x2c7 
V [libjvm.so+0x18a13af] VMError::report_and_die(Thread*, void*, char const*, int, char const*, char const*, __va_list_tag*)+0x2f 
V [libjvm.so+0xb502e0] report_vm_error(char const*, int, char const*, char const*, ...)+0x100 
V [libjvm.so+0x4a1b77] Label::~Label()+0x57 
V [libjvm.so+0x130efdd] MacroAssembler::char_array_compress(RegisterImpl*, RegisterImpl*, RegisterImpl*, XMMRegisterImpl*, XMMRegisterImpl*, XMMRegisterImpl*, XMMRegisterImpl*, RegisterImpl*, RegisterImpl*)+0xb4d 
V [libjvm.so+0x3ee244] string_compressNode::emit(CodeBuffer&, PhaseRegAlloc*) const+0x244 
V [libjvm.so+0x14fa27b] Compile::fill_buffer(CodeBuffer*, unsigned int*)+0x4cb 
V [libjvm.so+0xa71b60] Compile::Code_Gen()+0x510 
V [libjvm.so+0xa759a1] Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x10a1 
V [libjvm.so+0x877061] C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0xd1 
V [libjvm.so+0xa82979] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x409 
V [libjvm.so+0xa8394f] CompileBroker::compiler_thread_loop()+0x31f 
V [libjvm.so+0x17e5037] JavaThread::thread_main_inner()+0x2c7 
V [libjvm.so+0x17e536a] JavaThread::run()+0x22a 
V [libjvm.so+0x14d5cc0] thread_native_entry(Thread*)+0x100 


--------------- P R O C E S S --------------- 

Threads class SMR info: 
_java_thread_list=0x00007f75b474fe60, length=9, elements={ 
0x00007f75b401c000, 0x00007f75b4652000, 0x00007f75b4655000, 0x00007f75b4680800, 
0x00007f75b4683000, 0x00007f75b4685800, 0x00007f75b4688000, 0x00007f75b4717000, 
0x00007f75b4743000 
} 
_java_thread_list_alloc_cnt=10, _java_thread_list_free_cnt=9, _java_thread_list_max=9, _nested_thread_list_max=0 
_tlh_cnt=126, _tlh_times=0, avg_tlh_time=0.00, _tlh_time_max=0 
_delete_lock_wait_cnt=0, _delete_lock_wait_max=0 
_to_delete_list_cnt=0, _to_delete_list_max=1 

Java Threads: ( => current thread ) 
  0x00007f75b401c000 JavaThread "main" [_thread_blocked, id=167737, stack(0x00007f75bd804000,0x00007f75bd905000)] 
  0x00007f75b4652000 JavaThread "Reference Handler" daemon [_thread_blocked, id=167793, stack(0x00007f758834b000,0x00007f758844c000)] 
  0x00007f75b4655000 JavaThread "Finalizer" daemon [_thread_blocked, id=167794, stack(0x00007f758824a000,0x00007f758834b000)] 
  0x00007f75b4680800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=167810, stack(0x00007f7588149000,0x00007f758824a000)] 
=>0x00007f75b4683000 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=167811, stack(0x00007f7588048000,0x00007f7588149000)] 
  0x00007f75b4685800 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=167812, stack(0x00007f7567eff000,0x00007f7568000000)] 
  0x00007f75b4688000 JavaThread "Sweeper thread" daemon [_thread_blocked, id=167813, stack(0x00007f7567dfe000,0x00007f7567eff000)] 
  0x00007f75b4717000 JavaThread "Service Thread" daemon [_thread_blocked, id=168836, stack(0x00007f7567cfd000,0x00007f7567dfe000)] 
  0x00007f75b4743000 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=169046, stack(0x00007f7567afb000,0x00007f7567bfc000)] 

Other Threads: 
  0x00007f75b463c000 VMThread "VM Thread" [stack: 0x00007f758844d000,0x00007f758854d000] [id=167787] 
  0x00007f75b4734800 WatcherThread [stack: 0x00007f7567bfd000,0x00007f7567cfd000] [id=168896] 
  0x00007f75b404f800 GCTaskThread "GC Thread#0" [stack: 0x00007f75b9681000,0x00007f75b9781000] [id=167745] 
  0x00007f75b4076800 ConcurrentGCThread "G1 Main Marker" [stack: 0x00007f7593044000,0x00007f7593144000] [id=167756] 
  0x00007f75b4079000 ConcurrentGCThread "G1 Conc#0" [stack: 0x00007f7592f43000,0x00007f7593043000] [id=167757] 
  0x00007f75b451f800 ConcurrentGCThread "G1 Refine#0" [stack: 0x00007f7588ed0000,0x00007f7588fd0000] [id=167775] 
  0x00007f75b4521800 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x00007f7588dcf000,0x00007f7588ecf000] [id=167777] 

Threads with active compile tasks: 
C2 CompilerThread02111 b 4 java.lang.StringUTF16::compress (20 bytes) 
Comments
Fix Request Backport as part of backporting JDK-8206075 and JDK-8208480. The patch applies cleanly.
11-12-2018

URL: http://hg.openjdk.java.net/jdk/jdk/rev/c11be049acb8 User: thartmann Date: 2018-08-16 07:09:39 +0000
16-08-2018

Yes: Current CompileTask: C2: 250 73 b java.lang.String::getBytes (44 bytes) Stack: [0x00007fbc80fd5000,0x00007fbc810d6000], sp=0x00007fbc810d0a20, free space=1006k Native frames: (J=compiled Java code, A=aot compiled Java code, j=interpreted, Vv=VM code, C=native code) V [libjvm.so+0x18ae907] VMError::report_and_die(int, char const*, char const*, __va_list_tag*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned long)+0x2c7 V [libjvm.so+0x18af76f] VMError::report_and_die(Thread*, void*, char const*, int, char const*, char const*, __va_list_tag*)+0x2f V [libjvm.so+0xb50d30] report_vm_error(char const*, int, char const*, char const*, ...)+0x100 V [libjvm.so+0x4a1dd7] Label::~Label()+0x57 V [libjvm.so+0x1313aa6] MacroAssembler::byte_array_inflate(RegisterImpl*, RegisterImpl*, RegisterImpl*, XMMRegisterImpl*, RegisterImpl*)+0x4e6 V [libjvm.so+0x3ee648] string_inflateNode::emit(CodeBuffer&, PhaseRegAlloc*) const+0x178 V [libjvm.so+0x14fd4ab] Compile::fill_buffer(CodeBuffer*, unsigned int*)+0x4cb V [libjvm.so+0xa72170] Compile::Code_Gen()+0x510 V [libjvm.so+0xa75fb1] Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, int, bool, bool, bool, DirectiveSet*)+0x10a1 V [libjvm.so+0x877291] C2Compiler::compile_method(ciEnv*, ciMethod*, int, DirectiveSet*)+0xd1 V [libjvm.so+0xa82f99] CompileBroker::invoke_compiler_on_method(CompileTask*)+0x409 V [libjvm.so+0xa83f5f] CompileBroker::compiler_thread_loop()+0x30f V [libjvm.so+0x17e5767] JavaThread::thread_main_inner()+0x2c7 V [libjvm.so+0x17e5a9a] JavaThread::run()+0x22a V [libjvm.so+0x14d90f0] thread_native_entry(Thread*)+0x100
15-08-2018

MacroAssembler::byte_array_inflate() has the same issue.
15-08-2018

The 'below_threshold' label is used when AVX512 is enabled but only defined if UseSSE42Intrinsics is set. This code was introduced by JDK-8154974 in JDK 9 b120. ILW = Assert during C2 compilation (potential crash in compiled code with product builds), with AVX512 and -XX:UseSSE=3, disable _compressStringC/B intrinsics = HMM = P2
15-08-2018

http://cr.openjdk.java.net/~thartmann/8209511/webrev.00/
15-08-2018