Thanks, Leonid!

On 7/6/20 3:27 PM, Leonid Mesnik wrote:
Hi

The changes look good for me.

Leonid

On Jul 2, 2020, at 7:21 AM, Chris Plummer <chris.plum...@oracle.com> 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

Reply via email to