RFR(S/M): 8205419: [testbug] TestJmapCore failing without SA: introduce @requires vm.hasSA

Jini George jini.george at oracle.com
Mon Jun 25 17:24:23 UTC 2018


Some of the tests were skipped on OSX due to stackwalking issues on OSX. 
(Some were pstack related, and some for jstack on corefiles).

Thanks,
Jini.

On 6/25/2018 10:31 PM, Chris Plummer wrote:
> Hi Goetz,
> 
> The changes look good. Just one question though. In places where you have:
> 
>    42  * @requires vm.hasSAandCanAttach & os.family != "mac"
> 
> Do you know why these tests don't run on osx? I just wonder if it 
> related to attach not working unless root, and that is now covered by 
> hasSAandCanAttach(). If that is the case, the "mac" check can be removed.
> 
> thanks,
> 
> Chris
> 
> On 6/22/18 1:20 AM, Lindenmaier, Goetz wrote:
>> Hi,
>>
>> Ok, so I now added
>>    vm.hasSA and
>>    vm.hasSAandCanAttach
>> I use the first in the JMapCore tests, and in the tests that don't 
>> check shouldSAAttach()
>> right at the beginning.
>> Wherever the test is immediately ended after checking shouldSAAttach(), I
>> removed shouldSAAttach(), and added vm.hasSAandCanAttach.  The others
>> depend on  ClhsdbLauncher. Just checking vm.hasSA is on the safe side
>> if runOnCore() is changed.
>> http://cr.openjdk.java.net/~goetz/wr18/8205419-requiresHasSA/02/
>>
>> This also makes the implementation of VMProps and VMPlatform more clear
>> as requested by Chris.
>>
>> Best regards,
>>   Goetz.
>>
>>
>>> -----Original Message-----
>>> From: Jini George <jini.george at oracle.com>
>>> Sent: Thursday, June 21, 2018 12:18 PM
>>> To: Lindenmaier, Goetz <goetz.lindenmaier at sap.com>; 'Chris Plummer'
>>> <chris.plummer at oracle.com>; serviceability-dev (serviceability-
>>> dev at openjdk.java.net) <serviceability-dev at openjdk.java.net>
>>> Subject: Re: RFR(S/M): 8205419: [testbug] TestJmapCore failing 
>>> without SA:
>>> introduce @requires vm.hasSA
>>>
>>> Hi Goetz,
>>>
>>> Tests like TestJmapCore which involve only corefile debugging by SA (and
>>> not attaching to a live process) would only need to check for the
>>> presence of SA, and would not need to check for ptrace related attach
>>> permissions like what is done for Linux and OSX -- since super user
>>> privileges are not required to debug corefiles. So a single @requires
>>> catering to both these might not be desirable.
>>>
>>> Having said that, I realized that runOnCore() of ClhsdbLauncher
>>> incorrectly checks for the ptrace related attach permissions. (Will file
>>> an issue to correct this).
>>>
>>> An @requires instead of a shouldSAAttach() might help in avoiding fake
>>> passes like those on OSX when not run as "root".
>>> (https://bugs.openjdk.java.net/browse/JDK-8199700)
>>>
>>> Thanks,
>>> Jini.
>>>
>>>
>>>
>>>
>>> On 6/21/2018 1:52 AM, Lindenmaier, Goetz wrote:
>>>> Hi Chris,
>>>>
>>>> Thanks for looking at this change.
>>>>
>>>>> Can't VMProps.vmHasSA() just return Platform.shouldSAAttach()? It
>>> seems
>>>>> you are unnecessarily replicating Platform.shouldSAAttach() logic.
>>>> I think there are two things to distinguish:
>>>>    - platforms that don't implement SA
>>>>    - systems/setups where SA does not work.
>>>> If both can be recognized when VMProps is evaluated, shouldSAAttach()
>>>> is the one that is superfluous in the long run?!  If not, 
>>>> shouldSAAttach
>>>> should only return those where it is necessary to check in the test.
>>>> But this is probably too much brains in this case ��
>>>>
>>>>> If you are adding "@requires vm.hasSAandCanAttach" to a test, 
>>>>> shouldn't
>>>>> you remove the test's Platform.shouldSAAttach() check?
>>>> Well I asked in my mail whether I should do that. So I take this as 
>>>> a yes.
>>>> But it depends on whether it must be evaluated in the test.
>>>>
>>>>> Is there a reason not to take the more direct and established approach
>>>>> of just adding the Platform.shouldSAAttach() check to TestJmapCore? It
>>>>> would be a lot less disruptive.  I know the vm.hasSAandCanAttach
>>>>> approach has advantages in not even attempting to compile and run the
>>>>> test, but I'm not so sure those advantages outweigh the simplicity of
>>>>> just adding a Platform.shouldSAAttach() check to one test. I can go
>>>>> either way here. Just wondering if there are additional reasons I 
>>>>> might
>>>>> not be seeing.
>>>> I like the @requires much more. It tells right where the test is 
>>>> described
>>>> that it does not run with SA. The other is quite hidden in the test, 
>>>> e.g., in
>>>> helper class ClhsdbLauncher.java.
>>>> Also, it's more easy to remember (The implementor of
>>>> TestJmapCore forgot it...).  And, last but not least, it seems best 
>>>> practice
>>>> nowadays. There are lots of excludes for mac, they are also done by
>>> @requires
>>>> and not as a check using Platform at runtime.
>>>>
>>>>> Sorry, I don't have an answer to your VMProps evaluation question. You
>>>>> might need to ask a wider audience than just svc.
>>>> Whom should I ask? Hotspot-dev?
>>>>
>>>> Best regards,
>>>>     Goetz.
>>>>
>>>>
>>>>> thanks,
>>>>>
>>>>> Chris
>>>>>
>>>>> On 6/20/18 6:49 AM, Lindenmaier, Goetz wrote:
>>>>>> Hi,
>>>>>>
>>>>>> TestJmapCore is failing on aix because there jhsdb is not 
>>>>>> implemented.
>>>>>> So far, such tests check at runtime Platform.shouldSAAttach() 
>>>>>> which is
>>>>> missing
>>>>>> in TestJmapCore.
>>>>>>
>>>>>> Instead, I implement @requires vm.hasSAandCanAttach.
>>>>>> This makes jtreg skip the tests without compiling and starting them.
>>>>>>
>>>>>> I added the new property to all tests that check shouldSAAttach in 
>>>>>> jdk
>>> and
>>>>> hostpot test
>>>>>> directories.
>>>>>> This is the implementation of the new property, the rest is just
>>> repetitive
>>>>> checking it:
>>>>>> http://cr.openjdk.java.net/~goetz/wr18/8205419-
>>>>> requiresHasSA/01/test/jtreg-ext/requires/VMProps.java.udiff.html
>>>>>> webrev:
>>>>>> http://cr.openjdk.java.net/~goetz/wr18/8205419-requiresHasSA/01/
>>>>>>
>>>>>> Is it correct to assume the VMProps is evaluated on the same machine
>>> and
>>>>> with the same
>>>>>> user as used for executing the test?  canPtraceAttachLinux directly
>>>>> accesses the system.
>>>>>> (Should I remove the checks for shouldSAAttach() from the changed
>>> tests?)
>>>>>> Best regards,
>>>>>>      Goetz.
>>>>>
> 
> 


More information about the serviceability-dev mailing list