JDK-8035146 : assert(is_T_family(features) == is_niagara(features), "Niagara should be T series") is incorrect
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs25,8,9,10
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_11
  • CPU: sparc
  • Submitted: 2014-02-18
  • Updated: 2019-09-13
  • Resolved: 2017-07-31
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 10
10Fixed
Related Reports
Relates :  
Description
When running in a Solaris zone on T4/T5 what happens is that the architecture is reported as sun4v, so
is_niagara(features) is true, but family flag is for some reason stripped off.

I propose to remove the assert.

See vm_version_sparc.cpp, VM_Version::determine_features() .

The assert doesn't affect the product, but affects testing in zones, hence P4.
Comments
Fixed as part of JDK-8172231.
31-07-2017

ILW = incorrect assert, on some SPARC machines, no workaround = MLH = P4
20-02-2017

Addressed as part of updating SPARC HW feature detection support.
04-01-2017

Do we have answers for David's questions?
06-11-2014

What is special about "niagara" as opposed to other versions of this processor? Does a zone expose the full physical CPU or a subset thereof?
19-02-2014

We should also probably recognize this implementation string: Java HotSpot(TM) 64-Bit Server VM warning: kstat cpu_info implementation = 'SUN4V-CPU (CHIPID 0, CLOCK 2848 MHZ)', should contain SPARC
19-02-2014

Hotspot use kstat library to get information about CPU by parsing cpu_info.implementation string. As Igor showed kstat command on that zone do not show that info. Yes, sun4v could be Fujitsu Sparc64 too, that is why we have the check : static bool is_niagara(int features) { // 'sun4v_m' may be defined on both Sun/Oracle Sparc CPUs as well as // on Fujitsu Sparc64 CPUs, but only Sun/Oracle Sparcs can be 'niagaras'. return (features & sun4v_m) != 0 && (features & sparc64_family_m) == 0; }
18-02-2014

It is definitely wrong to consider every sun4v a niagara.
18-02-2014

Seems to me the assert is doing its job and alerting us to the fact that when running in zones features may not be reported correctly / as-expected. We need to determine why the zone doesn't report the expected information.
18-02-2014