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