On Tue, 27 Oct 2020 00:52:20 GMT, Serguei Spitsyn <[email protected]> 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