JDK-8000968 : NPG: UseCompressedKlassPointers asserts with ObjectAlignmentInBytes for >32G CompressedOops
  • Type: Bug
  • Component: hotspot
  • Sub-Component: runtime
  • Affected Version: hs25
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • Submitted: 2012-10-16
  • Updated: 2014-01-14
  • Resolved: 2013-02-04
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 8 Other
8Fixed hs25Fixed
$ java -XX:ObjectAlignmentInBytes=32 -Xms70g -version
# A fatal error has been detected by the Java Runtime Environment:
#  Internal Error (/tmp/jprt/P1/205937.amurillo/s/src/share/vm/oops/oop.inline.hpp:237), pid=3544, tid=140382950360832
#  assert((result & CONST64(0xffffffff00000000)) == 0) failed: narrow klass pointer overflow
# JRE version:  (8.0-b60)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.0-b05-internal-201210122059.amurillo.hs25-b05-snapshot-fastdebug mixed mode linux-amd64 compressed oops)

It appears that compressed klass pointers does not gracefully fall back and disable if the klass pointer cannot be encoded with the compressed oops shift.

I=H, VM crash at startup
L=M, not uncommon customer scenario to have 32G+ heap sizes
W=L, disable UseCompressedOops or UseCompressedKlassPointers
The problem can be reproduced with just -XX:ObjectAlignmentInBytes=32. The -Xms70g is not needed to reproduce the bug.