JDK-8149918 : CPUIDBrandString stub is generated on demand
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2016-02-16
  • Updated: 2020-09-01
  • Resolved: 2016-02-17
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 9
9 b108Fixed
Related Reports
Relates :  
Description
The fix for JDK-8138922 introduced a new assert in stubCodeGenerator.hpp. This assert is triggered with the JFR:

#  Internal Error (/opt/jprt/T/P1/005544.dpochepk/s/hotspot/src/share/vm/runtime/stubCodeGenerator.hpp:72), pid=12594, tid=12727
#  assert(!_frozen) failed: no modifications allowed

Stack: [0xc2f5e000,0xc2faf000],  sp=0xc2fac360,  free space=312k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
V  [libjvm.so+0x11c7507]  VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned int)+0x137;;  VMError::report_and_die(int, char const*, char const*, char*, Thread*, unsigned char*, void*, void*, char const*, int, unsigned int)+0x137
V  [libjvm.so+0x11c8120]  VMError::report_and_die(Thread*, char const*, int, char const*, char const*, char*)+0x30;;  VMError::report_and_die(Thread*, char const*, int, char const*, char const*, char*)+0x30
V  [libjvm.so+0x7e4500]  report_vm_error(char const*, int, char const*, char const*, ...)+0x60;;  report_vm_error(char const*, int, char const*, char const*, ...)+0x60
V  [libjvm.so+0x10933fa]  StubCodeMark::StubCodeMark(StubCodeGenerator*, char const*, char const*)+0x14a;;  StubCodeMark::StubCodeMark(StubCodeGenerator*, char const*, char const*)+0x14a
V  [libjvm.so+0x12005c1]  VM_Version_Ext_StubGenerator::generate_getCPUIDBrandString()+0xd1;;  VM_Version_Ext_StubGenerator::generate_getCPUIDBrandString()+0xd1
V  [libjvm.so+0x11fdac3]  VM_Version_Ext::generate_cpuid_brand_string_code()+0x103;;  VM_Version_Ext::generate_cpuid_brand_string_code()+0x103
V  [libjvm.so+0x11fdeab]  VM_Version_Ext::cpu_brand_string()+0xab;;  VM_Version_Ext::cpu_brand_string()+0xab
V  [libjvm.so+0x11ff2d1]  VM_Version_Ext::cpu_detailed_description(char*, unsigned int)+0x91;;  VM_Version_Ext::cpu_detailed_description(char*, unsigned int)+0x91
V  [libjvm.so+0x11ffbd8]  VM_Version_Ext::cpu_description()+0x28;;  VM_Version_Ext::cpu_description()+0x28
V  [libjvm.so+0xef9c63]  CPUInformationInterface::initialize()+0x83;;  CPUInformationInterface::initialize()+0x83
V  [libjvm.so+0xb0bc59]  JfrOSInterface::initialize()+0x79;;  JfrOSInterface::initialize()+0x79
V  [libjvm.so+0xaecc13]  Jfr::initialize_stage_one()+0x353;;  Jfr::initialize_stage_one()+0x353
V  [libjvm.so+0xaf0934]  JfrActivator::start()+0x154;;  JfrActivator::start()+0x154
V  [libjvm.so+0xb02a2d]  JNI2JFR_start_flight_recorder+0x17d;;  JNI2JFR_start_flight_recorder+0x17d
C  [libjfr.so+0x1c3b]  Java_oracle_jrockit_jfr_JFR_startFlightRecorder+0x2b;;  Java_oracle_jrockit_jfr_JFR_startFlightRecorder+0x2b
J 4714  oracle.jrockit.jfr.JFR.startFlightRecorder()Z (0 bytes) @ 0xee65411f [0xee6540a0+0x0000007f]
J 4713 C1 oracle.jrockit.jfr.JFR.startInternal()V (79 bytes) @ 0xe7807cc4 [0xe7807c80+0x00000044]
J 4707 C1 oracle.jrockit.jfr.JFR.tryLazyStart()V (151 bytes) @ 0xe78066b0 [0xe7806600+0x000000b0]
J 4705 C1 oracle.jrockit.jfr.JFR.get()Loracle/jrockit/jfr/JFR; (50 bytes) @ 0xe7805de0 [0xe7805ba0+0x00000240]
v  ~StubRoutines::call_stub
V  [libjvm.so+0xacdd5c]  JavaCalls::call_helper(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x73c;;  .L602+0x304
V  [libjvm.so+0xeeeda9]  os::os_exception_wrapper(void (*)(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*), JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x19;;  os::os_exception_wrapper(void (*)(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*), JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x19
V  [libjvm.so+0xacd246]  JavaCalls::call(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x66;;  JavaCalls::call(JavaValue*, methodHandle const&, JavaCallArguments*, Thread*)+0x66
V  [libjvm.so+0xb40869]  jni_invoke_static(JNIEnv_*, JavaValue*, _jobject*, JNICallType, _jmethodID*, JNI_ArgumentPusher*, Thread*) [clone .isra.119] [clone .constprop.130]+0x3e9;;  .L1078+0x5a
V  [libjvm.so+0xb5895a]  jni_CallStaticObjectMethod+0x16a;;  jni_CallStaticObjectMethod+0x16a
C  [libjfr.so+0xfeb]  ensure_java_inited+0xab;;  ensure_java_inited+0xab
C  [libjfr.so+0x10e3]  JFR_java_callback_start_recording+0x63;;  JFR_java_callback_start_recording+0x63
V  [libjvm.so+0xafabf9]  JFR2JNI_start_recording(char const*, unsigned int, char const**, bool, long long, long long, char const*, bool, long long, long long, bool, Thread*)+0x1e9;;  JFR2JNI_start_recording(char const*, unsigned int, char const**, bool, long long, long long, char const*, bool, long long, long long, bool, Thread*)+0x1e9
V  [libjvm.so+0xaff8c1]  StartFlightRecordingDCmd::execute(DCmdSource, Thread*)+0x211;;  StartFlightRecordingDCmd::execute(DCmdSource, Thread*)+0x211
V  [libjvm.so+0x8a8b9c]  DCmd::parse_and_execute(DCmdSource, outputStream*, char const*, char, Thread*)+0x1ec;;  DCmd::parse_and_execute(DCmdSource, outputStream*, char const*, char, Thread*)+0x1ec
V  [libjvm.so+0x490242]  jcmd(AttachOperation*, outputStream*)+0x42;;  jcmd(AttachOperation*, outputStream*)+0x42
V  [libjvm.so+0x491e4a]  attach_listener_thread_entry(JavaThread*, Thread*)+0x2ba;;  attach_listener_thread_entry(JavaThread*, Thread*)+0x2ba
V  [libjvm.so+0x1138b93]  JavaThread::thread_main_inner()+0x1d3;;  JavaThread::thread_main_inner()+0x1d3
V  [libjvm.so+0x1138e62]  JavaThread::run()+0x232;;  JavaThread::run()+0x232
V  [libjvm.so+0xee720c]  java_start(Thread*)+0xdc;;  java_start(Thread*)+0xdc
C  [libpthread.so.0+0x6b5a]  start_thread+0xca
C  [libc.so.6+0xf7e1e]  clone+0x5e
Comments
Surprising - I would have expected VM_Version to be fully and unconditionally initialized during VM startup.
16-02-2016

[~vlivanov], can you have a look?
16-02-2016