RFR (XS) 8205702: assert(UseCompressedClassPointers) failed in universe.hpp

Calvin Cheung calvin.cheung at oracle.com
Wed Jun 27 21:49:04 UTC 2018


Looks good.

thanks,
Calvin

On 6/27/18, 2:22 PM, Per Liden wrote:
> Sorry, but I noticed that the IncompatibleOptions.java assumes that 
> ZGC is always available, but it's only available on linux-x64, so this 
> will fail on other platforms. Updated webrev to take this into 
> account. It's currently running in mach5 t{1-3} on all platforms.
>
> http://cr.openjdk.java.net/~pliden/8205702/webrev.4
>
> /Per
>
> On 06/27/2018 08:34 PM, Per Liden wrote:
>> On 06/27/2018 08:29 PM, Calvin Cheung wrote:
>>>
>>>
>>> On 6/27/18, 11:08 AM, Per Liden wrote:
>>>> Hi Calvin,
>>>>
>>>> On 06/27/2018 07:39 PM, Calvin Cheung wrote:
>>>>> Hi Per,
>>>>>
>>>>> Thanks for coming up with a simpler fix. It looks good. Just one 
>>>>> comment below.
>>>>>
>>>>> On 6/27/18, 2:33 AM, Per Liden wrote:
>>>>>> Actually, that seems a bit too restrictive as 
>>>>>> vm.cds.archived.java.heap is only true when G1 is enabled.
>>>>>>
>>>>>> So, this is probably even better:
>>>>>>
>>>>>>  * @requires vm.cds
>>>>>>  * @requires vm.opt.final.UseCompressedOops
>>>>>>  * @requires vm.opt.final.UseCompressedClassPointers
>>>>> I think the @requires vm.cds calls into VMProps.vmCDS() which 
>>>>> calls the WB_IsCDSIncludedInVmBuild() where it already checks for 
>>>>> compressed oops and pointers:
>>>>>
>>>>>      if (!UseCompressedOops || !UseCompressedClassPointers) {
>>>>>        // On 64-bit VMs, CDS is supported only with compressed 
>>>>> oops/pointers
>>>>>        return false;
>>>>>      }
>>>>>
>>>>> Are the last two @requires needed?
>>>>
>>>> That's an excellent point, and you're right, those extra @requires 
>>>> are not needed. New webrev:
>>>>
>>>> http://cr.openjdk.java.net/~pliden/8205702/webrev.3
>>> Looks good.
>>
>> Thanks Calvin!
>>
>> /Per
>>
>>>
>>> thanks,
>>> Calvin
>>>>
>>>> Thanks for reviewing!
>>>>
>>>> cheers,
>>>> Per
>>>>
>>>>>
>>>>> thanks,
>>>>> Calvin
>>>>>>
>>>>>> Updated webrev: http://cr.openjdk.java.net/~pliden/8205702/webrev.2
>>>>>>
>>>>>> /Per
>>>>>>
>>>>>> On 06/27/2018 10:37 AM, Per Liden wrote:
>>>>>>> Updated webrev, which adjusts the @requires tag, from:
>>>>>>>
>>>>>>>    @requires vm.cds & vm.gc != "Z"
>>>>>>>
>>>>>>> to:
>>>>>>>
>>>>>>>    @requires vm.cds.archived.java.heap
>>>>>>>
>>>>>>> which I believe is more correct in this case.
>>>>>>>
>>>>>>> http://cr.openjdk.java.net/~pliden/8205702/webrev.1
>>>>>>>
>>>>>>> cheers,
>>>>>>> Per
>>>>>>>
>>>>>>>
>>>>>>> On 06/27/2018 09:15 AM, Per Liden wrote:
>>>>>>>> Hi Coleen,
>>>>>>>>
>>>>>>>> This doesn't look quite right to me. ZGC already disables 
>>>>>>>> UseCompressedOop and UseCompressedClassPointers, which should 
>>>>>>>> be the indicators that we can't use CDS. The problem is that 
>>>>>>>> CDS checks those flags _before_ the heap has had a change to 
>>>>>>>> say they it supports. So if we just move the call to 
>>>>>>>> set_shared_spaces_flags() after the call to 
>>>>>>>> GCConfig::arguments()->initialize() (which should be safe), 
>>>>>>>> then we're all good and you'll get the usual:
>>>>>>>>
>>>>>>>> $ ./build/fastdebug/images/jdk/bin/java -Xshare:dump 
>>>>>>>> -XX:+UnlockExperimentalVMOptions -XX:+UseZGC
>>>>>>>> Error occurred during initialization of VM
>>>>>>>> Cannot dump shared archive when UseCompressedOops or 
>>>>>>>> UseCompressedClassPointers is off.
>>>>>>>>
>>>>>>>> Here's a proposed patch for this, which also adjusts the 
>>>>>>>> appropriate tests for this:
>>>>>>>>
>>>>>>>> http://cr.openjdk.java.net/~pliden/8205702/webrev.0
>>>>>>>>
>>>>>>>> cheers,
>>>>>>>> Per
>>>>>>>>
>>>>>>>> On 06/27/2018 01:09 AM, coleen.phillimore at oracle.com wrote:
>>>>>>>>>
>>>>>>>>> Hi Calvin, thank you for reporting the bug and the code review 
>>>>>>>>> and test code.
>>>>>>>>>
>>>>>>>>> On 6/26/18 5:42 PM, Calvin Cheung wrote:
>>>>>>>>>> Hi Coleen,
>>>>>>>>>>
>>>>>>>>>> The code changes look good.
>>>>>>>>>>
>>>>>>>>>> Since there's a new error message, I'd suggest adding a test 
>>>>>>>>>> to runtime/SharedArchiveFile/SharedArchiveFile.java as follows:
>>>>>>>>>>
>>>>>>>>>> diff --git 
>>>>>>>>>> a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java 
>>>>>>>>>> b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java 
>>>>>>>>>>
>>>>>>>>>> --- 
>>>>>>>>>> a/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java 
>>>>>>>>>>
>>>>>>>>>> +++ 
>>>>>>>>>> b/test/hotspot/jtreg/runtime/SharedArchiveFile/SharedArchiveFile.java 
>>>>>>>>>>
>>>>>>>>>> @@ -52,5 +52,13 @@
>>>>>>>>>>                                "-Xshare:on", "-version");
>>>>>>>>>>          out = CDSTestUtils.executeAndLog(pb, 
>>>>>>>>>> "SharedArchiveFile");
>>>>>>>>>>          CDSTestUtils.checkExec(out);
>>>>>>>>>> +
>>>>>>>>>> +        // CDS dumping doesn't work with ZGC
>>>>>>>>>> +        ProcessBuilder pb = 
>>>>>>>>>> ProcessTools.createJavaProcessBuilder(true,
>>>>>>>>>> + "-XX:SharedArchiveFile=./SharedArchiveFile.jsa",
>>>>>>>>>> +                                "-XX:+UseZGC",
>>>>>>>>>> +                                "-Xshare:dump");
>>>>>>>>>> +        out = CDSTestUtils.executeAndLog(pb, 
>>>>>>>>>> "SharedArchiveFile");
>>>>>>>>>> +        CDSTestUtils.checkExecExpectError(out, 1, 
>>>>>>>>>> "DumpSharedSpaces (-Xshare:dump) is not supported with ZGC.");
>>>>>>>>>>      }
>>>>>>>>>>  }
>>>>>>>>>>
>>>>>>>>>> (I haven't tested the above)
>>>>>>>>>
>>>>>>>>> It needed an -XX:+UnlockExperimentalVMOptions as well, and not 
>>>>>>>>> reclare pb.
>>>>>>>>>
>>>>>>>>> open webrev at 
>>>>>>>>> http://cr.openjdk.java.net/~coleenp/8205702.02/webrev
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Also, I think the new error message should be included in the 
>>>>>>>>>> release notes.
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> I added the test case and it passes.  I don't think having a 
>>>>>>>>> release note for something that nobody would ever do for an 
>>>>>>>>> experimental option is worth having.   But I can look into the 
>>>>>>>>> ZGC release notes and see if there's something that says CDS 
>>>>>>>>> is not supported.
>>>>>>>>>
>>>>>>>>> Thanks,
>>>>>>>>> Coleen
>>>>>>>>>> thanks,
>>>>>>>>>> Calvin
>>>>>>>>>>
>>>>>>>>>> On 6/26/18, 2:13 PM, coleen.phillimore at oracle.com wrote:
>>>>>>>>>>> Summary: Disable CDS with ZGC
>>>>>>>>>>>
>>>>>>>>>>> Tested with:
>>>>>>>>>>> java -XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xshare:dump
>>>>>>>>>>> java -XX:+UnlockExperimentalOptions -XX:+UseZGC -Xshare:on 
>>>>>>>>>>> -version
>>>>>>>>>>>
>>>>>>>>>>> open webrev at 
>>>>>>>>>>> http://cr.openjdk.java.net/~coleenp/8205702.01/webrev
>>>>>>>>>>> bug link https://bugs.openjdk.java.net/browse/JDK-8205702
>>>>>>>>>>>
>>>>>>>>>>> Thanks,
>>>>>>>>>>> Coleen
>>>>>>>>>


More information about the hotspot-runtime-dev mailing list