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

Serguei Spitsyn sspitsyn at openjdk.java.net
Tue Oct 27 00:55:21 UTC 2020


On Thu, 22 Oct 2020 20:35:29 GMT, Richard Reingruber <rrich at openjdk.org> wrote:

>> The following test cases try to provoke VMOutOfMemoryException during object reallocation because of JVMTI PopFrame / ForceEarlyReturn:
>> 
>> EAPopFrameNotInlinedReallocFailure
>> EAPopInlinedMethodWithScalarReplacedObjectsReallocFailure
>> EAForceEarlyReturnOfInlinedMethodWithScalarReplacedObjectsReallocFailure
>> 
>> For ZGC (so far) this is not 100% reliable.
>> 
>> Just ignoring the runs where the expected OOME was not raised was not accepted.
>> 
>> Summary of the now accepted solution:
>> 
>> - The 3 problematic test cases are skipped if ZGC is selected.
>> 
>> - They are also skipped if no OOME during object reallocation can be expected because allocations are not eliminated.
>> 
>> - In consumeAllMemory, as a last step, empty LinkedList nodes are created without long array to fill up small blocks of free memory.
>> 
>> - EATests.java is removed from the problem list for ZGC.
>
> 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

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

Marked as reviewed by sspitsyn (Reviewer).

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


More information about the serviceability-dev mailing list