RFR(S) 8243506 SharedBaseAddress is ignored by -Xshare:dump

Ioi Lam ioi.lam at oracle.com
Tue May 5 18:40:54 UTC 2020


https://bugs.openjdk.java.net/browse/JDK-8243506
http://cr.openjdk.java.net/~iklam/jdk15/8243506-SharedBaseAddress-ignored.v01/

-XX:SharedBaseAddress was essentially ignored due to a bug in
JDK-8231610 [1].

This fix will enhance both the flexibility and security of CDS.


After this fix, -XX:SharedBaseAddress=N will have the following effect:

N != 0

   CDS archive written with a base address of N. If -XX:SharedBaseAddress
   is not specified, we will use a default address (0x8_00000000 on
   64-bit OS).

   At run time, we will first attempt to map the CDS archive at N. If this
   fails (the OS doesn't have enough contiguous free space at N), we will
   map the CDS archive at a suitable location picked by the OS.

   Specifying a non-default address could be useful:
   - for diagnosing purposes
   - if the default address is already occupied for some reason on your
     environment, but you have another location that's always free.

N == 0

   At run time, the CDS archive will always be mapped to an address
   selected by the OS.

   This is useful for improved security -- on OSes that support ASLR 
(Address
   Space Layout Randomization), the address of the archived metaspace 
objects
   will be randomized on every run to make attacks more difficult.


I have added checks to make the code more robust in handling arbitrary 
values
of N. See new tests in 
cest/hotspot/jtreg/runtime/cds/SharedBaseAddress.java,
and MetaspaceShared::initialize_dumptime_shared_and_meta_spaces().


Thanks
- Ioi

------

[1] https://bugs.openjdk.java.net/browse/JDK-8231610
     Relocate the CDS archive if it cannot be mapped to the requested 
address


More information about the hotspot-runtime-dev mailing list