SanchoGGP / ggp-base

The General Game Playing Base Package
8 stars 4 forks source link

stanford.skirmish causes Sancho to crash in propnet construction #385

Closed arr28 closed 8 years ago

arr28 commented 8 years ago

It is valid GDL according to the validator (even the OPPNFValidator), but produces a stack overflow when run for real.

Exception in thread "GamePlayer - Sancho 1.61d (9147)" 18:02:13.427 - Exception in thread "GamePlayer - Sancho 1.61d (9147)" 
18:02:13.428 - java.lang.StackOverflowError
java.lang.StackOverflowError
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2104)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2130)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2130)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2130)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2130)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2130)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2130)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2130)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
    at org.ggp.base.util.propnet.polymorphic.factory.OptimizingPolymorphicPropNetFactory.recursiveFindReachable(OptimizingPolymorphicPropNetFactory.java:2164)
...etc.
arr28 commented 8 years ago

Same for base.skirmishZeroSum.

arr28 commented 8 years ago

I was wondering about talking to Alex but it looks like recursiveFindReachable is one of our own inventions (because it doesn't appear in the ggp-base version of OPNF) so no point.

arr28 commented 8 years ago

This was just a stack size issue, rather than an infinite recursion bug. 2MB stack size is sufficient. (1MB isn't.) Now running with -Xss2m.