United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: 6869822 assert(Universe::narrow_oop_shift() == 0,"use unscaled narrow oop")
6869822 : assert(Universe::narrow_oop_shift() == 0,"use unscaled narrow oop")

Details
Type:
Bug
Submit Date:
2009-08-07
Status:
Closed
Updated Date:
2011-03-08
Project Name:
JDK
Resolved Date:
2011-03-08
Component:
hotspot
OS:
windows_2003
Sub-Component:
compiler
CPU:
x86
Priority:
P4
Resolution:
Fixed
Affected Versions:
hs16
Fixed Versions:
hs17

Related Reports
Backport:
Backport:
Backport:
Backport:

Sub Tasks

Description
compiler/6826736/Test.java  failed during Nightly testing.

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  Internal Error (C:\temp\jprt\P1\B\213244.jrose\source\src\share\vm\memory\universe.cpp:860), pid=250700, tid=30884
#  Error: assert(Universe::narrow_oop_shift() == 0,"use unscaled narrow oop")
#
# JRE version: 7.0-b67

                                    

Comments
EVALUATION

http://hg.openjdk.java.net/hsx/hsx16/master/rev/248f0ad25d21
                                     
2009-11-13
EVALUATION

http://hg.openjdk.java.net/hsx/hsx16/baseline/rev/248f0ad25d21
                                     
2009-11-06
PUBLIC COMMENTS

Problem:
The test uses -XX:HeapBaseMinAddress=32g flag to force heap allocation
above 32g and get compressed oops with non zero base.
In such case the finction Universe::preferred_heap_base() sets
narrow_oop_shift to 3 and returns 0 as requested heap address.
But with 0 requested address (default memory address request) OS still may
allocate small heap bellow 4gb. And this will trigger the assert.

Solution:
Replace the assert with narrow_oop_shift set to 0.
Also use specified on command line HeapBaseMinAddress value as
heap base address for the first (from three) request.
                                     
2009-08-17
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/1a81ea4b45d4
                                     
2009-08-15
SUGGESTED FIX

Replace the assert with narrow_oop_shift set to 0.
                                     
2009-08-07
EVALUATION

The test uses -XX:HeapBaseMinAddress=32g flag to force heap allocation above 32g and get compressed oops with non 0 base.
In such case the finction Universe::preferred_heap_base() sets narrow_oop_shift and returns 0 as requested heap address.
But with 0 requested address (allocate anywhere) OS still may allocate heap bellow 4gb. And this will trigger assert.
                                     
2009-08-07



Hardware and Software, Engineered to Work Together