United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-6947341 JVM Crash running Oracle ATG CRMDemo
JDK-6947341 : JVM Crash running Oracle ATG CRMDemo

Details
Type:
Bug
Submit Date:
2010-04-26
Status:
Closed
Updated Date:
2011-04-23
Project Name:
JDK
Resolved Date:
2011-04-23
Component:
hotspot
OS:
linux,linux_redhat_5.0
Sub-Component:
compiler
CPU:
x86
Priority:
P3
Resolution:
Fixed
Affected Versions:
6u20,6u22
Fixed Versions:
hs19 (b04)

Related Reports
Backport:
Backport:
Backport:
Backport:
Backport:
Duplicate:
Relates:

Sub Tasks

Description
Oracle ATG CRMDemo crashes running JDK 6u18.

                                    

Comments
EVALUATION

Missing protected page below heap with compressed oops which use narrow_oop_base.

It is caused by 6951686 bug which is fixed in HS19 only. Because of that bug (requested address is not used in special memory reservation) the heap is reserved above 32Gb virtual address ( 0x00002aaaae200000) but the VM code thinks it does reserved at requested address and it does not need nonaccess prefix (protected page below heap), so code in ReservedSpace::protect_noaccess_prefix() is not executed. But after heap initialization in Universe::initialize_heap() the narrow_oop_base is set based on heap address.

So the ReservedSpace code is missing the check that heap is not reserved at specified address.
                                     
2010-06-18
EVALUATION

http://hg.openjdk.java.net/jdk7/hotspot-comp/hotspot/rev/5f249b390094
                                     
2010-06-23
PUBLIC COMMENTS

Missing protected page below heap with compressed oops
which use narrow_oop_base and implicit null check.
It is caused by ReservedSpace code misses checks that OS
reserved heap at requested address.

Before 6951686 fix Linux will reserve heap memory at address
which is not requested for compressed oops VM (usually above
32Gb virtual address: 0x00002aaaae200000). But VM thinks
it did reserve at requested address and it does not need
protected page below heap, so the code in protect_noaccess_prefix()
is not executed.

Solution:
Add missing checks. I also added few asserts and prints
to make sure memory reservation done correctly for
compressed oops.
                                     
2010-06-23



Hardware and Software, Engineered to Work Together