[
https://issues.apache.org/jira/browse/LUCENE-7032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15149858#comment-15149858
]
Robert Muir commented on LUCENE-7032:
-------------------------------------
Here is the current best I have. Its still very inefficient and slow, but tends
to fail in less than five minutes:
{noformat}
rmuir@beast:~/workspace/lucene-solr/lucene/core$ ant beast
-Dtestcase=TestMinimize -Dtests.method="testBasic*"
-Dargs="-XX:+UseCompressedOops -XX:+UseParallelGC -XX:-UseSuperWord"
-Dtests.iters=1000 -Dtests.multiplier=3 -Dtests.seed=5E1BF6106DCA9EC9
-Dtests.failfast=yes -Dbeast.iters=1000 -Dtests.dups=8 -Dtests.jvms=8
Buildfile: /home/rmuir/workspace/lucene-solr/lucene/core/build.xml
-clover.disable:
ivy-availability-check:
ivy-fail:
ivy-configure:
[ivy:configure] :: Apache Ivy 2.3.0 - 20130110142753 ::
http://ant.apache.org/ivy/ ::
[ivy:configure] :: loading settings :: file =
/home/rmuir/workspace/lucene-solr/lucene/ivy-settings.xml
-clover.load:
-clover.classpath:
-clover.setup:
clover:
-check-git-state:
-git-cleanroot:
-copy-git-state:
git-autoclean:
resolve:
init:
compile-core:
compile-test-framework:
-check-git-state:
-git-cleanroot:
-copy-git-state:
git-autoclean:
ivy-availability-check:
ivy-fail:
ivy-configure:
[ivy:configure] :: loading settings :: file =
/home/rmuir/workspace/lucene-solr/lucene/ivy-settings.xml
resolve:
init:
compile-lucene-core:
-check-git-state:
-git-cleanroot:
-copy-git-state:
git-autoclean:
ivy-availability-check:
ivy-fail:
ivy-configure:
[ivy:configure] :: loading settings :: file =
/home/rmuir/workspace/lucene-solr/lucene/ivy-settings.xml
resolve:
init:
-clover.disable:
-clover.load:
-clover.classpath:
-clover.setup:
clover:
compile-core:
compile-codecs:
-check-git-state:
-git-cleanroot:
-copy-git-state:
git-autoclean:
ivy-availability-check:
ivy-fail:
ivy-configure:
[ivy:configure] :: loading settings :: file =
/home/rmuir/workspace/lucene-solr/lucene/ivy-settings.xml
resolve:
common.init:
compile-lucene-core:
init:
-clover.disable:
-clover.load:
-clover.classpath:
-clover.setup:
clover:
compile-core:
-clover.disable:
-clover.load:
-clover.classpath:
-clover.setup:
clover:
common.compile-core:
compile-core:
compile-test:
install-junit4-taskdef:
validate:
resolve-groovy:
[ivy:cachepath] :: resolving dependencies ::
org.codehaus.groovy#groovy-all-caller;working
[ivy:cachepath] confs: [default]
[ivy:cachepath] found org.codehaus.groovy#groovy-all;2.4.4 in public
[ivy:cachepath] :: resolution report :: resolve 12ms :: artifacts dl 0ms
---------------------------------------------------------------------
| | modules || artifacts |
| conf | number| search|dwnlded|evicted|| number|dwnlded|
---------------------------------------------------------------------
| default | 1 | 0 | 0 | 0 || 1 | 0 |
---------------------------------------------------------------------
-init-totals:
-beast:
[beaster] Beast round: 1
[junit4] Duplicate suite name used with XML reports:
org.apache.lucene.util.automaton.TestMinimize. This may confuse tools that
process XML reports. Set 'ignoreDuplicateSuites' to true to skip this message.
[beaster] Executing 8 suites with 8 JVMs.
[beaster]
[beaster] Started J1 PID(8867@localhost).
[beaster] Started J6 PID(8857@localhost).
[beaster] Started J5 PID(8859@localhost).
[beaster] Started J3 PID(8861@localhost).
[beaster] Started J4 PID(8862@localhost).
[beaster] Started J0 PID(8858@localhost).
[beaster] Started J7 PID(8860@localhost).
[beaster] Started J2 PID(8863@localhost).
[beaster] 2> NOTE: reproduce with: ant test -Dtestcase=TestMinimize
-Dtests.method=testBasic -Dtests.seed=5E1BF6106DCA9EC9 -Dtests.multiplier=3
-Dtests.locale=fr-GF -Dtests.timezone=Africa/Khartoum -Dtests.asserts=true
-Dtests.file.encoding=UTF-8
[beaster] [23:43:35.303] ERROR 0.62s J0 | TestMinimize.testBasic {
seed=[5E1BF6106DCA9EC9:3C97F1414A872260]} <<<
[beaster] > Throwable #1: java.lang.IllegalArgumentException: source=3 is
out of bounds (maxState is 2)
[beaster] > at
__randomizedtesting.SeedInfo.seed([5E1BF6106DCA9EC9:3C97F1414A872260]:0)
[beaster] > at
org.apache.lucene.util.automaton.Automaton.addTransition(Automaton.java:165)
[beaster] > at
org.apache.lucene.util.automaton.MinimizationOperations.minimize(MinimizationOperations.java:245)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.toAutomatonInternal(RegExp.java:537)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.findLeaves(RegExp.java:617)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.toAutomatonInternal(RegExp.java:521)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.findLeaves(RegExp.java:617)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.toAutomatonInternal(RegExp.java:512)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.toAutomaton(RegExp.java:495)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.toAutomaton(RegExp.java:426)
[beaster] > at
org.apache.lucene.util.automaton.AutomatonTestUtil.randomSingleAutomaton(AutomatonTestUtil.java:262)
[beaster] > at
org.apache.lucene.util.automaton.AutomatonTestUtil.randomAutomaton(AutomatonTestUtil.java:277)
[beaster] > at
org.apache.lucene.util.automaton.TestMinimize.testBasic(TestMinimize.java:30)
[beaster] > at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown
Source)
[beaster] > at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[beaster] > at java.lang.reflect.Method.invoke(Method.java:520)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1764)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:871)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:907)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:921)
[beaster] > at
org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
[beaster] > at
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
[beaster] > at
org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
[beaster] > at
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
[beaster] > at
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367)
[beaster] > at
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:809)
[beaster] > at
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:460)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:880)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:781)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:816)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:827)
[beaster] > at
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
[beaster] > at
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
[beaster] > at
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
[beaster] > at
org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367)
[beaster] > at java.lang.Thread.run(Thread.java:804)
[beaster] 2> NOTE: test params are: codec=Asserting(Lucene60): {},
docValues:{}, sim=RandomSimilarity(queryNorm=true,coord=no): {}, locale=fr-GF,
timezone=Africa/Khartoum
[beaster] 2> NOTE: Linux 4.2.0-25-generic amd64/Oracle Corporation 9-ea
(64-bit)/cpus=8,threads=1,free=159816632,total=242745344
[beaster] 2> NOTE: All tests run in this JVM: [TestMinimize]
[beaster] 2> NOTE: reproduce with: ant test -Dtestcase=TestMinimize
-Dtests.method=testBasic -Dtests.seed=5E1BF6106DCA9EC9 -Dtests.multiplier=3
-Dtests.locale=fr-GF -Dtests.timezone=Africa/Khartoum -Dtests.asserts=true
-Dtests.file.encoding=UTF-8
[beaster] [23:43:38.117] ERROR 0.47s J1 | TestMinimize.testBasic {
seed=[5E1BF6106DCA9EC9:ECAC52C8285BA478]} <<<
[beaster] > Throwable #1: java.lang.ArrayIndexOutOfBoundsException: 10
[beaster] > at
__randomizedtesting.SeedInfo.seed([5E1BF6106DCA9EC9:ECAC52C8285BA478]:0)
[beaster] > at
org.apache.lucene.util.automaton.MinimizationOperations.minimize(MinimizationOperations.java:235)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.toAutomatonInternal(RegExp.java:524)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.toAutomaton(RegExp.java:495)
[beaster] > at
org.apache.lucene.util.automaton.RegExp.toAutomaton(RegExp.java:426)
[beaster] > at
org.apache.lucene.util.automaton.AutomatonTestUtil.randomSingleAutomaton(AutomatonTestUtil.java:262)
[beaster] > at
org.apache.lucene.util.automaton.AutomatonTestUtil.randomAutomaton(AutomatonTestUtil.java:276)
[beaster] > at
org.apache.lucene.util.automaton.TestMinimize.testBasic(TestMinimize.java:30)
[beaster] > at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown
Source)
[beaster] > at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[beaster] > at java.lang.reflect.Method.invoke(Method.java:520)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner.invoke(RandomizedRunner.java:1764)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$8.evaluate(RandomizedRunner.java:871)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$9.evaluate(RandomizedRunner.java:907)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$10.evaluate(RandomizedRunner.java:921)
[beaster] > at
org.apache.lucene.util.TestRuleSetupTeardownChained$1.evaluate(TestRuleSetupTeardownChained.java:49)
[beaster] > at
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
[beaster] > at
org.apache.lucene.util.TestRuleThreadAndTestName$1.evaluate(TestRuleThreadAndTestName.java:48)
[beaster] > at
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
[beaster] > at
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367)
[beaster] > at
com.carrotsearch.randomizedtesting.ThreadLeakControl.forkTimeoutingTask(ThreadLeakControl.java:809)
[beaster] > at
com.carrotsearch.randomizedtesting.ThreadLeakControl$3.evaluate(ThreadLeakControl.java:460)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner.runSingleTest(RandomizedRunner.java:880)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$5.evaluate(RandomizedRunner.java:781)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$6.evaluate(RandomizedRunner.java:816)
[beaster] > at
com.carrotsearch.randomizedtesting.RandomizedRunner$7.evaluate(RandomizedRunner.java:827)
[beaster] > at
org.apache.lucene.util.AbstractBeforeAfterRule$1.evaluate(AbstractBeforeAfterRule.java:45)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
org.apache.lucene.util.TestRuleStoreClassName$1.evaluate(TestRuleStoreClassName.java:41)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.NoShadowingOrOverridesOnMethodsRule$1.evaluate(NoShadowingOrOverridesOnMethodsRule.java:40)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
org.apache.lucene.util.TestRuleAssertionsRequired$1.evaluate(TestRuleAssertionsRequired.java:53)
[beaster] > at
org.apache.lucene.util.TestRuleMarkFailure$1.evaluate(TestRuleMarkFailure.java:47)
[beaster] > at
org.apache.lucene.util.TestRuleIgnoreAfterMaxFailures$1.evaluate(TestRuleIgnoreAfterMaxFailures.java:64)
[beaster] > at
org.apache.lucene.util.TestRuleIgnoreTestSuites$1.evaluate(TestRuleIgnoreTestSuites.java:54)
[beaster] > at
com.carrotsearch.randomizedtesting.rules.StatementAdapter.evaluate(StatementAdapter.java:36)
[beaster] > at
com.carrotsearch.randomizedtesting.ThreadLeakControl$StatementRunner.run(ThreadLeakControl.java:367)
[beaster] > at java.lang.Thread.run(Thread.java:804)
[beaster] 2> NOTE: test params are: codec=Asserting(Lucene60): {},
docValues:{}, sim=RandomSimilarity(queryNorm=true,coord=no): {}, locale=fr-GF,
timezone=Africa/Khartoum
[beaster] 2> NOTE: Linux 4.2.0-25-generic amd64/Oracle Corporation 9-ea
(64-bit)/cpus=8,threads=1,free=177601584,total=233832448
[beaster] 2> NOTE: All tests run in this JVM: [TestMinimize]
[beaster]
[beaster] Tests with failures [seed: 5E1BF6106DCA9EC9]:
[beaster] - org.apache.lucene.util.automaton.TestMinimize.testBasic {
seed=[5E1BF6106DCA9EC9:3C97F1414A872260]}
[beaster] - org.apache.lucene.util.automaton.TestMinimize.testBasic {
seed=[5E1BF6106DCA9EC9:ECAC52C8285BA478]}
[beaster]
[beaster]
BUILD FAILED
/home/rmuir/workspace/lucene-solr/lucene/common-build.xml:1467: The following
error occurred while executing this line:
/home/rmuir/workspace/lucene-solr/lucene/common-build.xml:1457: The following
error occurred while executing this line:
/home/rmuir/workspace/lucene-solr/lucene/common-build.xml:1014: There were test
failures: 8 suites, 8000 tests, 2 errors, 1945 ignored (1945 assumptions)
[seed: 5E1BF6106DCA9EC9]
{noformat}
> jdk-9-ea+105 breaks MinimizeOperations.minimize()
> -------------------------------------------------
>
> Key: LUCENE-7032
> URL: https://issues.apache.org/jira/browse/LUCENE-7032
> Project: Lucene - Core
> Issue Type: Bug
> Reporter: Robert Muir
>
> As soon as jdk-9-ea+105 was put into test rotation, automaton tests have been
> sporatically failing in non-reproducible ways. All of them invoke hopcroft
> minimization either directly or indirectly.
> The bug manifests in several forms:
> * ArrayIndexOutOfBoundsException in minimize()
> * IllegalArgumentException for an explicit bounds check
> * incorrect resulting automaton
> This method is ... let's say not the ideal one to debug something like this,
> but I've at least got it where I can make it fail in a few minutes with
> beasting, so we can try simple things like turning on/off jvm flags to try to
> narrow it more.
> It would be really great to make it fail more efficiently, but unfortunately
> it takes many thousands of iterations until we understand more about it.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]