RFR(XS): 8240691: serviceability/sa/ClhsdbCDSJstackPrintAll.java and serviceability/sa/ClhsdbCDSCore.java not work with ZGC

Yumin Qi yumin.qi at oracle.com
Tue Mar 10 18:53:58 UTC 2020


Thanks. Pushed.

On 3/10/20 11:40 AM, Ioi Lam wrote:
> Looks good to me. Thanks!
>
> - Ioi
>
> On 3/10/20 11:31 AM, Yumin Qi wrote:
>> Hi, Ioi
>>   Thanks for clearing the whole things.
>>   Since it is a trivial fix, I will change the synopsis of the bug at 
>> push using your updated version: ClhsdbCDSJstackPrintAll incorrectly 
>> thinks CDS is in use
>>
>>    Let me know if it is OK for push.
>>
>> Thanks
>> Yumin
>>
>> On 3/10/20 11:11 AM, Ioi Lam wrote:
>>>
>>>
>>> On 3/10/20 10:26 AM, Chris Plummer wrote:
>>>> Ok, that makes sense. I committed a change recently that issues an 
>>>> "echo true" command so all commands that follow are echoed, which 
>>>> is why you now see "verbose true" in the output. So this resulted 
>>>> in it always thinking that shared spaces was enabled, even when 
>>>> not. But this did not cause any difference in behavior I think 
>>>> because of JDK-8240698 (I'm still not real clear on that).
>>>>
>>>> And after fixing this issue and JDK-8240698 we will then start to 
>>>> see issues because ZGC does not support SA, and therefore need a 
>>>> 3rd bug to fix that?
>>>>
>>>
>>> Hi Chris,
>>>
>>>
>>> I think we need to fix things in the following order. The goal is to 
>>> increase test coverage for CDS.
>>>
>>>
>>>
>>> [1] 8240691 - (I renamed the bug to) "ClhsdbCDSJstackPrintAll 
>>> incorrectly thinks CDS is in use")
>>>
>>> After the above is fixed, we still won't run ClhsdbCDSJstackPrintAll 
>>> for jtreg -vmoption:-XX:+UseZGC yet, because this test has 
>>> "@requires vm.cds", which reports false when ZGC is selected.
>>>
>>>
>>>
>>> [2] 8240563 - WB_IsCDSIncludedInVmBuild should support uncompressed 
>>> oops/klasses
>>>
>>> After the above is fixed, we can run a lot of *other* CDS tests with 
>>> CDS+ZGC.
>>>
>>> However, for ClhsdbCDSJstackPrintAll, when jtreg 
>>> -vmoption:-XX:+UseZGC is used
>>>
>>> + the test dumps a CDS archive with ZGC enabled (use compressed oops 
>>> = false)
>>>
>>> + the test tries to use the CDS archive without enabling ZGC (due to 
>>> 8240698), so compressed oops = true. As a result, the VM cannot load 
>>> this CDS archive because the oop compression mode doesn't match.
>>>
>>>
>>>
>>> [3] 8240698 - LingeredApp did not pass getTestJavaOpts() to the 
>>> children process if vmArguments is already specified
>>>
>>> After the above is fixed, ClhsdbCDSJstackPrintAll will dump and run 
>>> with the archive with -XX+UseZGC, so we can test the behavior of SA 
>>> when ZGC is enabled.
>>>
>>>
>>>
>>> But as Chris said, SA doesn't support ZGC yet (JDK-8220624), so we 
>>> probably don't need to fix 8240698 until SA supports ZGC. As a 
>>> precaution, we should disable this test in ProblemList-zgc.txt as a 
>>> part of 8240563.
>>>
>>> Also, I think the behavior of 8240698 may be intentional -- in many 
>>> cases, especially when with "jtreg -vmoption:-Xcomp", you probably 
>>> don't want the LingerApp to run with -Xcomp. So we should have an 
>>> API in LingerApp.startApp() to explicitly allow the passing of 
>>> getTestJavaOpts() to the child process.
>>>
>>> Thanks
>>> - Ioi
>>>
>>>
>>>> Chris
>>>>
>>>> On 3/10/20 9:38 AM, Ioi Lam wrote:
>>>>> Hi Chris,
>>>>>
>>>>>
>>>>> The test uses this to check if CDS is on:
>>>>>
>>>>>     List<String> cmds = List.of("flags UseSharedSpaces");
>>>>>     String useSharedSpacesOutput = test.run(theApp.getPid(), cmds,
>>>>>                                                     null, null);
>>>>>     ....
>>>>>     if (!useSharedSpacesOutput.contains("true")) {
>>>>>         // CDS archive is not mapped. Skip the rest of the test.
>>>>>
>>>>> The output looks like this:
>>>>>
>>>>>     hsdb> hsdb> + verbose true
>>>>>     hsdb> + flags UseSharedSpaces
>>>>>     UseSharedSpaces = false command line
>>>>>     hsdb> + quit
>>>>>
>>>>> I think at one point the "if" worked, but the "+ verbose true" 
>>>>> part of the log must have been added recently to cause the "if" to 
>>>>> determine the wrong result.
>>>>>
>>>>> Thanks
>>>>> - Ioi
>>>>>
>>>>>
>>>>>
>>>>> On 3/9/20 9:33 PM, Chris Plummer wrote:
>>>>>> Hi Yumin,
>>>>>>
>>>>>> While your fix is a more bullet proof way of checking if CDS is 
>>>>>> on, what was broken with the original version (was there a stray 
>>>>>> "false" in the output"), and what does this have to do with ZGC?
>>>>>>
>>>>>> thanks,
>>>>>>
>>>>>> Chris
>>>>>>
>>>>>> On 3/9/20 8:06 PM, Yumin Qi wrote:
>>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>>     I made a change after discussed with Ioi, the test should 
>>>>>>> check against UseSharedSpaces instead, it passed with/without 
>>>>>>> change of 8240563 (tested in local). Also passed tier1,2,3.
>>>>>>>
>>>>>>>      URL: http://cr.openjdk.java.net/~minqi/8240691/webrev/
>>>>>>>
>>>>>>>
>>>>>>>     Thanks
>>>>>>>
>>>>>>>      Yumin
>>>>>>>
>>>>>>>
>>>>>>> On 3/6/20 2:26 PM, Yumin Qi wrote:
>>>>>>>> HI,
>>>>>>>>
>>>>>>>>   Can I have your reviews on
>>>>>>>>
>>>>>>>>   Bug: https://bugs.openjdk.java.net/browse/JDK-8240691
>>>>>>>>
>>>>>>>>   webrev: http://cr.openjdk.java.net/~minqi/8240691/webrev/
>>>>>>>>
>>>>>>>>   Summary: With JDK-8232069 
>>>>>>>> (https://bugs.openjdk.java.net/browse/JDK-8232069), CDS works 
>>>>>>>> with UseCompressedOop and UseCompressedClassPointers off. The 
>>>>>>>> code for detecting CDS will report false with ZGC since ZGC 
>>>>>>>> turned off those two flags. The detection code will be changed 
>>>>>>>> in 
>>>>>>>> JDK-8240563(https://bugs.openjdk.java.net/browse/JDK-8240563), 
>>>>>>>> this will cause those two tests fail.
>>>>>>>>
>>>>>>>>
>>>>>>>>    Tests: jtreg to show the tests not selected with ZGC.
>>>>>>>>
>>>>>>>>    Thanks
>>>>>>>>
>>>>>>>>    Yumin
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>



More information about the hotspot-runtime-dev mailing list