RFR(S): 8007772: G1: assert(!hr->isHumongous() || mr.start() == hr->bottom()) failed: the start of HeapRegion and MemRegion should be consistent for humongous regions

John Cuthbertson john.cuthbertson at oracle.com
Mon Feb 11 18:01:42 UTC 2013


Hi Everyone,

Can I get a couple of reviews of this fix - the webrev can be found at: 
http://cr.openjdk.java.net/~johnc/8007772/webrev.0/

Summary:
An assert I asked Tao to add during his recent scanning optimization for 
Humongous regions was failing. The reason was because the local marking 
task could have been signaled to abort (because it exceeded it's time 
interval) while scanning the humongous object. In this case we would 
restart the marking step with a memory region with a slightly different 
starting address causing the assert to trip. Without the assert this 
would nullify Tao change and cause further unnecessary scanning of (a 
subset of) the humongous object. We should be giving up the current 
humongous region even if the task is asked to abort.

Testing:
The failing tests from nsk.stress and vm.gc nightly tests.

Without fix:
TOTAL TESTS IN RUN: 154
TEST PASS: 102; 66% rate
TEST FAIL: 52; 33% rate
TEST UNDEFINED: 0; 0% rate
TEST INCOMPLETE: 0; 0% rate
TESTS NOT RUN: 0

With fix:
TOTAL TESTS IN RUN: 154
TEST PASS: 153; 99% rate
TEST FAIL: 1; 0% rate
TEST UNDEFINED: 0; 0% rate
TEST INCOMPLETE: 0; 0% rate
TESTS NOT RUN: 0

The remaining failure is FinalizerTest03 - a known failure.

Thanks,

JohnC




More information about the hotspot-gc-dev mailing list