RFR (L): 8248194: Need better support for running SA tests on core files
Chris Plummer
chris.plummer at oracle.com
Tue Jul 7 00:06:09 UTC 2020
Hi Alex,
Thanks for the review. I'll cleanup the unused var.
The crash output is on stdout, not stderr. From VMError::report_and_die():
// File descriptor to tty to print an error summary to.
// Hard wired to stdout; see JDK-8215004 (compatibility concerns).
static const int fd_out = 1; // stdout
thanks,
Chris
On 7/6/20 4:16 PM, Alex Menkov wrote:
> 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