review request for 7142641: -Xshared:on fails on ARM
Daniel D. Daugherty
daniel.daugherty at oracle.com
Tue Feb 28 23:46:52 UTC 2012
Wow! Ya learn something new every day!
Thanks for the background info. And you can count me as
Since change affects all Linuxes, you should move the
bug to jvm/hotspot/runtime_cds...
On 2/28/12 4:43 PM, Dean Long wrote:
> Hi Dan,
> yes, I was concerned about that as well. But MAP_SHARED isn't
> actually needed to share read-only pages. If you trace an app's
> startup using "strace" you can see that the dynamic linker maps shared
> libraries such as libc with MAP_PRIVATE. Multiple processes still
> share those pages through the page cache. Furthermore, the linux mmap
> implementation turns off the shared flag if the file was opened
> read-only (but unfortunately it turns off the flag only after
> enforcing the cache coloring constraints.)
> On 2/28/2012 2:40 PM, Daniel D. Daugherty wrote:
>> I'm confused... I thought mapping the read-only CDS archive pages as
>> "shared" permits those pages to be shared by other java processes that
>> are also using the CDS archive...
>> On 2/28/12 3:05 PM, Dean Long wrote:
>>> Summary of changes: 3 lines changed: 0 ins; 2 del; 1 mod; 5538 unchg
>>> The Class Data Sharing file is mapped "shared" on linux, which
>>> places extra constraints on which virtual address a file offset can
>>> use. This is to ensure consistency on certain platforms with
>>> aliasing caches. However as the CDS file is opened read-only,
>>> mapping it "shared" has no benefit and can cause the mmap to fail.
>>> The simplest fix is to change the mapping to "private".
>>> Tested on linux arm platform with aliasing cache. Installed CDS
>>> with -Xshare:dump then ran through some vm tests as a sanity check.
>>> This bug is on the 7u4 watch list.
More information about the hotspot-gc-dev