JDK-6808665 : Use486InstrsOnly aborts 32-bit VM
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs15,9
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2009-02-23
  • Updated: 2017-05-16
  • Resolved: 2015-12-09
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.
9 b103Fixed
Sub Tasks
JDK-8177133 :  
Running a 32-bit x86 build with -XX:+Use486InstrsOnly aborts the VM:

$ gamma -XX:+Use486InstrsOnly -XX:+PrintMiscellaneous -XX:+Verbose -version
VM option '+Use486InstrsOnly'
VM option '+PrintMiscellaneous'
VM option '+Verbose'
[SafePoint Polling address: 0xfd7d0000]
[Memory Serialize  Page address: 0xfd6c0000]
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/vm_version_x86_32.hpp:312
# A fatal error has been detected by the Java Runtime Environment:
#  Internal Error (/export/home/twisti/hotspot-comp/hotspot/src/cpu/x86/vm/vm_version_x86_32.hpp:312), pid=8233, tid=1
#  Error: assert(_cpuid_info.std_cpuid1_rax.bits.family != 0,"VM_Version not initialized")
# JRE version: 7.0-b47
# Java VM: OpenJDK Server VM (15.0-b01-internal-jvmg mixed mode solaris-x86 )
# An error report file with more information is saved as:
# /export/home/twisti/hotspot-comp/hotspot/hs_err_pid8233.log
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
Current thread is 1
Dumping core ...

Normally we would make the flag Obsolete as it is not useful, but given this can't possibly be being used we can go straight to complete removal.

CCC request for command line option removal on draft stage http://ccc.us.oracle.com/6808665

This ancient code needs to be removed.

ILW=Assert, Only 32-bit builds when forcing Use486InstrsOnly, none=MLH=P4

EVALUATION Here is a backtrace: (dbx) where current thread: t@1 [1] _lwp_kill(0x1, 0x6, 0x80463c8, 0xfda9a6ea), at 0xfdaa1f95 [2] thr_kill(0x1, 0x6, 0x80463c8, 0xfda4a3ce), at 0xfda9a70c [3] raise(0x6, 0x0, 0x8046418, 0xfda2188a), at 0xfda4a3da [4] abort(0x6, 0xfee23e04, 0xfe76d6bc, 0x8040031, 0xfe389d64, 0xfeefa300), at 0xfda218aa =>[5] os::abort(dump_core = true), line 1810 in "os_solaris.cpp" [6] VMError::report_and_die(this = 0x804659c), line 831 in "vmError.cpp" [7] report_assertion_failure(file_name = 0xfe9c037a "/export/home/twisti/hotspot-comp/hotspot/src/cpu/x86/vm/vm_version_x86_32.hpp", line_no = 312, message = 0xfe9c03c8 "assert(_cpuid_info.std_cpuid1_rax.bits.family != 0,"VM_Version not initialized")"), line 173 in "debug.cpp" [8] VM_Version::assert_is_initialized(), line 312 in "vm_version_x86_32.hpp" [9] VM_Version::is_amd(), line 333 in "vm_version_x86_32.hpp" [10] VM_Version::supports_mmx_ext(), line 386 in "vm_version_x86_32.hpp" [11] VM_Version::get_processor_features(), line 266 in "vm_version_x86_32.cpp" [12] VM_Version::initialize(), line 471 in "vm_version_x86_32.cpp" [13] VM_Version_init(), line 207 in "vm_version.cpp" [14] init_globals(), line 89 in "init.cpp" [15] Threads::create_vm(args = 0x8046c3c, canTryAgain = 0x8046c0f), line 2915 in "thread.cpp" [16] JNI_CreateJavaVM(vm = 0x80474c0, penv = 0x80474bc, args = 0x8046c3c), line 3253 in "jni.cpp" [17] InitializeJVM(pvm = 0x80474c0, penv = 0x80474bc, ifn = 0x8047490), line 1082 in "java.c" [18] main(argc = 1, argv = 0x80474f8), line 330 in "java.c" The reason is that printing the features string calls is_amd() which calls assert_is_initialized(). But when Use486InstrsOnly is used getPsrInfo_stub() is not called: if (!Use486InstrsOnly) { // Get raw processor info getPsrInfo_stub(&_cpuid_info);