RFR: 8255072: [TESTBUG] com/sun/jdi/EATests.java should not fail if expected VMOutOfMemoryException is not thrown [v3]

Richard Reingruber rrich at openjdk.java.net
Tue Oct 27 10:04:19 UTC 2020


On Tue, 27 Oct 2020 00:52:20 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:

>> Richard Reingruber has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
>> 
>>  - Skip test cases expecting OOMEs if running with ZGC.
>>  - Merge branch 'master' into JDK-8255072-eatests-oom-not-thrown
>>  - Make OOME more reliable and skip test cases if it is not expected because scalar replacement is disabled
>>  - 8255072: [TESTBUG] com/sun/jdi/EATests.java should not fail if expected VMOutOfMemoryException is not thrown
>
> Hi Richard,
> It looks good to me.
> One nit:
>      public static final boolean DoEscapeAnalysis     = unbox(WB.getBooleanVMFlag("DoEscapeAnalysis"), UseJVMCICompiler);
>      public static final boolean EliminateAllocations = unbox(WB.getBooleanVMFlag("EliminateAllocations"), UseJVMCICompiler); // read by debugger
>      public static final boolean DeoptimizeObjectsALot   = WB.getBooleanVMFlag("DeoptimizeObjectsALot");                      // read by debugger
>      public static final long BiasedLockingBulkRebiasThreshold = WB.getIntxVMFlag("BiasedLockingBulkRebiasThreshold");
>      public static final long BiasedLockingBulkRevokeThreshold = WB.getIntxVMFlag("BiasedLockingBulkRevokeThreshold");
> +    public static final boolean ZGCIsSelected        = GC.Z.isSelected();
> There are unneeded spaces before '=' sign.
> 
> Thanks,
> Serguei

Hi Serguei,

thanks for reviewing. I'll remove the whitespace.

I'm able now to reproduce the issue but only with ZGC. So far my attempts(*) to reliably get the OOME during ForceEarlyReturn/PopFrame because of object reallocation failed though. So I'm still in favour of the current solution which is: skip the 3 problematic testcases if ZGC is selected in the target vm. I'm still open for suggestions also though. I'll wait a few more days and then I'll integrate.

Thanks, Richard.

(*) I tried:

- disable TLAB
- call WhiteBox.fullGC() in consumeAllMemory() before the last round of allocations.
- Check if the memory can be allocated by the thread doing the PopFrame/ForceEarlyReturn. com.sun.jdi.ThreadReference::invokeMethod() cannot be used. A target thread has to be specified and the jdwp threads are not visible through jdi. Only a dedicated native test JVMTI agent can consume all memory and then do the PopFrame/ForceEarlyReturn.

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

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


More information about the serviceability-dev mailing list