JDK-8210284 : "assert((av & 0x00000001) == 0) failed: unsupported V8" on Solaris 11.4
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 10.0.2,11,12
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: solaris
  • CPU: sparc
  • Submitted: 2018-08-31
  • Updated: 2020-04-28
  • Resolved: 2018-09-20
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.8-oracleFixed 12 b13Fixed
Related Reports
Relates :  
Description
Debug version of java crashes on Solaris 11.4 with 
# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/vm_version_solaris_sparc.cpp:348
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (/scratch/opt/mach5/mesos/work_dir/2533a948-7c7a-49b3-902e-148b3916f5af/workspace/open/src/hotspot/os_cpu/solaris_sparc/vm_version_solaris_sparc.cpp:348), pid=9586, tid=2
#  assert((av & 0x00000001) == 0) failed: unsupported V8
#
# JRE version:  (10.0.2+13) (fastdebug build )
# Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 10.0.2+13, mixed mode, sharing, tiered, ERROR in GC mode, solaris-sparc)
# Core dump will be written. Default location: /scratch/lmesnik/ws/lucene/core or core.9586
#
# An error report file with more information is saved as:
# /scratch/lmesnik/ws/lucene/hs_err_pid9586.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.java.com/bugreport/crash.jsp
#
Comments
Fix request (11u) -- will label after testing completed. I would like to downport this for parity with 11.0.8-oracle. Applies clean.
22-04-2020

It turns out that the following TR (from 2009, Solaris 10) was acted on for Solaris 11.5, and later back-ported to 11.4, despite being dismissed on earlier occasions (as the bits are only valid for 32-bit systems/mode): "15580483 isainfo -x is wrong for many SPARC systems." We simply have to remove the sanity check.
11-09-2018

Sanity check will be removed in order to avoid a change in how HW capabilities are reported (via getisax) for V9 on Solaris 11.4 onward.
11-09-2018

ILW = Assert due to unexpected CPU feature (should not affect product builds), easy to reproduce on Solaris 11.4, no workaround = MHH = P2
10-09-2018

What HW are we looking at? These defines/bits are supposed to be SPARC V8 only... Need to check with the Solaris people.
04-09-2018

asserts were added by JDK-8172231 changes in JDK 10
04-09-2018

[~phedlin] please, look.
04-09-2018

The processor feature flag code is usually updated by someone on the Compiler team. I'm moving this bug from hotspot/runtime -> hotspot/compiler. Update: I've reset the bug so it can be triaged by the Compiler team.
04-09-2018

src/hotspot/os_cpu/solaris_sparc/vm_version_solaris_sparc.cpp: // These are SPARC V8 legacy features. assert((av & AV_SPARC_MUL32) == 0, "unsupported V8"); assert((av & AV_SPARC_DIV32) == 0, "unsupported V8"); assert((av & AV_SPARC_FSMULD) == 0, "unsupported V8"); assert((av & AV_SPARC_V8PLUS) == 0, "unsupported V8"); Line 348 is the first assert in the JDK10 repo that I'm looking at, but my repo is based on JDK10 GA and not JDK 10.0.2 + 13. Update: found the defines on my Solaris 11.2 SRU5 server: /usr/include/sys/auxv_SPARC.h:#define AV_SPARC_MUL32 0x00000001 /* 32x32-bit smul/umul is efficient */ /usr/include/sys/auxv_SPARC.h:#define AV_SPARC_DIV32 0x00000002 /* 32x32-bit sdiv/udiv is efficient */ /usr/include/sys/auxv_SPARC.h:#define AV_SPARC_FSMULD 0x00000004 /* fsmuld is efficient */ /usr/include/sys/auxv_SPARC.h:#define AV_SPARC_V8PLUS 0x00000008 /* V9 instructions avail to 32-bit apps */ So what this assert is saying: assert((av & AV_SPARC_MUL32) == 0, "unsupported V8"); is that it expects that bit to be clear and it is not. I'm wondering if the AV_SPARC_MUL32 has been reused for something else in Solaris 11.4 (and is no longer related to the ancient V8 instruction set).
04-09-2018

JDK 8 works fine. JDK 9 is not supported and not tested. ./jdk1.8.0_191/fastdebug/bin/java -version java version "1.8.0_191-fastdebug" Java(TM) SE Runtime Environment (build 1.8.0_191-fastdebug-b07) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b07-fastdebug, mixed mode) ./jdk-10.0.2/fastdebug/bin/java -version # To suppress the following error report, specify this argument # after -XX: or in .hotspotrc: SuppressErrorAt=/vm_version_solaris_sparc.cpp:348 # # A fatal error has been detected by the Java Runtime Environment: # # Internal Error (/scratch/opt/mach5/mesos/work_dir/2533a948-7c7a-49b3-902e-148b3916f5af/workspace/open/src/hotspot/os_cpu/solaris_sparc/vm_version_solaris_sparc.cpp:348), pid=9594, tid=2 # assert((av & 0x00000001) == 0) failed: unsupported V8 # # JRE version: (10.0.2+13) (fastdebug build ) # Java VM: Java HotSpot(TM) 64-Bit Server VM (fastdebug 10.0.2+13, mixed mode, sharing, tiered, ERROR in GC mode, solaris-sparc) # Core dump will be written. Default location: /scratch/lmesnik/ws/lucene/core or core.9594 # # An error report file with more information is saved as: # /scratch/lmesnik/ws/lucene/hs_err_pid9594.log # # If you would like to submit a bug report, please visit: # http://bugreport.java.com/bugreport/crash.jsp # Current thread is 2 Dumping core ... Abort (core dumped)
31-08-2018