RFR: 8281614: serviceability/sa/ClhsdbFindPC.java fails with java.lang.RuntimeException: 'In code in NMethod for jdk/test/lib/apps/LingeredApp.steadyState' missing from stdout/stderr

Chris Plummer cjplummer at openjdk.java.net
Tue Feb 22 22:58:49 UTC 2022


On Tue, 22 Feb 2022 21:22:50 GMT, David Holmes <dholmes at openjdk.org> wrote:

>> This test has 4 test cases/modes: two core files test cases and two process. Each runs with and w/o `-Xcomp`. The `-Xcomp` test cases are not suppose to run when `-XX:+DeoptimizeALot` is used, because the test does some checks that assume certain methods will be compiled. This is handled by adding the following to the test case:
>> 
>> ` * @requires vm.opt.DeoptimizeALot != true`
>> 
>> When this was first added, only the process test cases existed. Later on the core tests cases were added, and the `@requires` was copied improperly. It ended up with `#no-xcomp-process` rather than `#xcomp-core`, which allows the `#xcomp-core` test case to run even when `-XX:+DeoptimizeALot` is being used.
>
> test/hotspot/jtreg/serviceability/sa/ClhsdbFindPC.java line 49:
> 
>> 47:  * @bug 8193124
>> 48:  * @summary Test the clhsdb 'findpc' command with Xcomp on core file
>> 49:  * @requires vm.compMode != "Xcomp"
> 
> The summary says "with Xcomp" but the requires says "!= Xcomp" ???

Xcomp is in reference to how the debuggee is launched, and that is controlled by the test. See next comment for more.

> test/hotspot/jtreg/serviceability/sa/ClhsdbFindPC.java line 61:
> 
>> 59:  * @bug 8193124
>> 60:  * @summary Test the clhsdb 'findpc' command w/o Xcomp on live process
>> 61:  * @requires vm.hasSA
> 
> Summary says  w/o xcomp but no requires clause to reject Xcomp mode

I think that is related to why xcomp-process and xcomp-core are not in agreement. Probably also a bug introduced when adding the two core tests (just like the DeoptimizeALot check was done wrong). As a reference, here's what it looked like before adding the two core tests:


 * @requires vm.hasSA
 * @requires vm.compiler1.enabled
 * @requires vm.opt.DeoptimizeALot != true
 * @run main/othervm/timeout=480 ClhsdbFindPC true

 * @requires vm.compMode != "Xcomp"
 * @requires vm.hasSA
 * @requires vm.compiler1.enabled
 * @run main/othervm/timeout=480 ClhsdbFindPC false

The first test is running the debuggee with -Xcomp. The test itself can be run with or without -Xcomp. The second runs the debuggee without -Xcomp. In this case the test is not allowed to be run with -Xcomp, because it would be passed to the debuggee (although with some work the test could have stripped it). I believe Leonid added this restriction to avoid unnecessarily testing the debuggee in -Xcomp mode twice. To be it consistent it looks like I need to move the `@requires vm.compMode != "Xcomp"` from `id=xcomp-core` to `no-xcomp-process`. The other choice is to just remove this restriction. I wasn't a fan of it when it went in initially.

-------------

PR: https://git.openjdk.java.net/jdk/pull/7542


More information about the serviceability-dev mailing list