RFR (S) : 8014959 : assert(Compile::current()->live_nodes() < (uint)MaxNodeLimit) failed: Live Node limit exceeded limit
Vladimir Kozlov
vladimir.kozlov at oracle.com
Mon Jun 10 09:42:04 PDT 2013
David,
In what place you hit "out of nodes" failure if you don't increase
NodeLimitFudgeFactor?
I think we can still hit "out of nodes" during insert_copies() because
6000 may be not enough for huge method with a lot of blocks. Could you
do the check on each iteration in blocks loop?:
src/share/vm/opto/chaitin.cpp Mon Jun 10 09:35:47 2013 -0700
@@ -435,6 +435,9 @@
// Insert un-coalesced copies. Visit all Phis. Where inputs to a
Phi do
// not match the Phi itself, insert a copy.
coalesce.insert_copies(_matcher);
+ if (C->failing()) {
+ return;
+ }
}
// After aggressive coalesce, attempt a first cut at coloring.
diff -r 573d86d412cd src/share/vm/opto/coalesce.cpp
--- a/src/share/vm/opto/coalesce.cpp Thu May 30 10:57:57 2013 -0700
+++ b/src/share/vm/opto/coalesce.cpp Mon Jun 10 09:35:47 2013 -0700
@@ -240,6 +240,8 @@
_unique = C->unique();
for( uint i=0; i<_phc._cfg._num_blocks; i++ ) {
+ C->check_node_count(NodeLimitFudgeFactor, "out of nodes when insert
copies");
+ if (C->failing()) return;
Block *b = _phc._cfg._blocks[i];
uint cnt = b->num_preds(); // Number of inputs to the Phi
Thanks,
Vladimir
On 6/8/13 4:56 PM, David Chase wrote:
>
> webrev: http://cr.openjdk.java.net/~drchase/8014959/webrev.00/
>
> bug:
> SQE MethodHandle + breakpoint + step torture test has four outcomes:
> 1) success;
> 2) failure, timeout.;
> 3) failure, does not reach target breakpoint;
> 4) crash, too many nodes
>
> Failures 2 & 3 are a result of the torture being a little too thorough; the target methodHandle is wrapped in a random number N of various MH transformations, where N varies from 0 to 999. However, the number of steps required to complete is about 22-25 times the wrapping level, and only 9000 steps are allowed (only enough for about 360-410 deep). So it is recommended that the test be random in a smaller range that runs to nearly 9000 steps (i.e., 250-350).
>
> fix: two-part; see also INTJDK-7604173 filed against the test.
> This fix hardens the compiler against running out of nodes (failure #4); several missing bailout checks were added, the fudgefactor was doubled, and the node limit was increased to leave about the same number of available nodes net of tripled fudgefactor (which occurs in some tests).
>
> testing:
> 1) jtreg test/compiler + test/closed on Mac laptop
> 2) JPRT on compiler
> 3) 200 runs of tweaked version of SQE test in attempt to provoke crash (with failures ignored): 100 from 900-999, 100 from 400 to 900.
>
> David
>
More information about the hotspot-compiler-dev
mailing list