RFR: 8199807 & 8202738: AppCDS performs overly restrictive path matching check

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Mon May 14 21:56:37 UTC 2018

On 2018-05-11 23:33, Erik Joelsson wrote:
> Hello,
> For the build change, it's very undesirable to always have to relink 
> libjvm on every incremental build. Such a change cannot be accepted.
> I have a counter suggestion, which is still a bit of a hack, but it 
> will cause vm_version.cpp to be recompiled (almost) every time 
> libjvm.so needs to be relinked. The drawback is that compiling 
> vm_version.cpp is now bound to happen absolutely last and so cannot 
> happen in parallel with other compilations.
> Webrev: http://cr.openjdk.java.net/~erikj/8202738/webrev.01/index.html

This looks as good as it can get for a simple fix, but I'd still like to 
get on the record that I think the way we handle both __TIME__/__DATE__ 
in hotspot, and ad-hoc version strings in general, is broken and leave 
much to be desired.


> Bug: https://bugs.openjdk.java.net/browse/JDK-8202738
> /Erik
> On 2018-05-10 16:11, Jiangli Zhou wrote:
>> Hi,
>> Please review the following webrev that addresses the issue of 
>> copied/moved JDK image after generating a CDS archive. Thanks Karen 
>> Kinnear and Alan Baterman for initiating the investigation & 
>> discussions in this area (especially the ease of usage). Thanks Ioi 
>> for implementing a test case for moved JDK (JDK-8202935).
>> webrev: http://cr.openjdk.java.net/~jiangli/8199807_8202738/webrev.00/
>> RFE: https://bugs.openjdk.java.net/browse/JDK-8199807?filter=14921
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8202738?filter=14921
>> The webrev includes the following three main parts:
>> 1. Reduced check for JDK ‘modules’ image file at runtime. The runtime 
>> path to the ‘modules’ image is no longer required to the the same as 
>> dump time path. Runtime performs file size check only for the 
>> ‘modules’ image, which must match with the dump time ‘modules’ size. 
>> Invalidation of an outdated archive is achieved by the existing 
>> vm_version string check (the archived vm_version string must match 
>> with the runtime vm_version string).
>> 2. Boot path check are now performed based on the content of the 
>> archive. Also added a new test case in BootClassPathMismatch.java and 
>> add more comments for existing test cases.
>> 3. Fixed the stale vm_version string issue with incremental build. 
>> The issue was discovered during the work of 8199807. CDS uses 
>> vm_version string as part of the runtime validation check for 
>> archive. A stale vm_version string causes the CDS runtime to 
>> mistakenly accept an outdated archive. The fix is to make sure 
>> vm_version.o is recompiled properly when the library/vm is rebuilt.
>> Tested with hs-tier1-4 and jdk-tier1-2. Tested by relocating the JDK 
>> image manually after generating an archive. Also tested with Ioi’s 
>> test both locally and via Mach5.
>> Thanks,
>> Jiangli

More information about the hotspot-runtime-dev mailing list