RFR (L): 8248194: Need better support for running SA tests on core files

Alex Menkov alexey.menkov at oracle.com
Mon Jul 6 23:16:02 UTC 2020


Hi Chris,

Generally looks good to me.

CoreUtils.java:

86         String[] cmds;
- unused var

And one question.
You use OutputAnalyzer.getStdout() get extract core file location.
I thought it should be printed in stderr.
Or we have duplicated stdout and stderr in the case?

--alex

On 07/02/2020 07:21, Chris Plummer wrote:
> [Note, the following changes only impact serviceability tests, but I am 
> adding some test library code to assist with creating and finding core 
> files, and I thought others on hotspot-dev might have an interest in that.]
> 
> Hello,
> 
> Please help review the following changes to add better support for 
> writing SA tests that work on core files:
> 
> https://bugs.openjdk.java.net/browse/JDK-8248194
> http://cr.openjdk.java.net/~cjplummer/8248194/webrev.01/index.html
> 
> As outlined in the CR, these are the 3 main goals of this CR:
> 
> 1. Add a shared API for locating the path to the core file. This 
> includes parsing the output of the crashed process to locate where the 
> core file was saved, and returning this location to the user. This API 
> will be placed in the new CoreUtils class.
> 
> 2. Add a shared API to support adding the "ulimit -c unlimited" prefix 
> to the command that will produce the core file, allowing the overriding 
> of any lower limit so we can be sure the core file will be produced. 
> This API will also be placed in the new CoreUtils class.
> 
> 3. LingeredApp should include support for producing a core file.
> 
> As proof of concept for these improvements, I'm updating the following 3 
> tests to make use of them:
> 
> ClhsdbCDSCore.java and TestJmapCore.java: Use the CoreUtils support 
> listed above. These tests do not use LingeredApp, so those improvements 
> don't apply.
> 
> ClhsdbFindPC.java: Use all the above new features, including having 
> LingeredApp produce a core file. This is the only test modified to start 
> testing on core files that didn't previously do so. It still also tests 
> on a live process.
> 
> In the future more Clhsdb tests will be converted to work on core files 
> in a manner similar to ClhsdbFindPC.
> 
> The new CoreUtils code is borrowed from (more like ripped out of) 
> ClhsdbCDSCore.java and TestJmapCore.java. They both had a lot of code 
> dedicated to finding the core file and also applying "ulimit -c 
> unlimited", but didn't do so in quite the same way. Now both these tests 
> share code in CoreUtils.java. One thing I did drop is TestJmapCore.java 
> use of ":KILLED_PID" in the output to help find the core file. It's no 
> longer necessary based on the smarter core locating code I pulled from 
> ClhsdbCDSCore.java.
> 
> One other improvement was to enable windows support for ClhsdbCDSCore. 
> The only reason it was not enabled previously is because the author 
> couldn't figure out how to properly generate the command for the process 
> that produces the core. Since it is launched using "sh -c", the path has 
> to be converted to use forward slashes. This is now done in CoreUtils.
> 
> One other change in ClhsdbCDSCore is that it no longer renames the core 
> file to a well known name in the cwd. This was unnecessary. It 
> originated in code from ciReplayBase.java, which does have a reason to 
> do the rename, but ClhsdbCDSCore does not.
> 
> The new libLingeredApp.c relies on JDK-8248667 [1] being in place in 
> order to have the build system properly compile it. JDK-8248667 will be 
> reviewed separately on build-dev and pushed just before the changes for 
> this CR.
> 
> thanks,
> 
> Chris
> 
> [1] https://bugs.openjdk.java.net/browse/JDK-8248667


More information about the serviceability-dev mailing list