[ 
https://issues.apache.org/jira/browse/LUCENE-6522?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14583329#comment-14583329
 ] 

Kevin Langman commented on LUCENE-6522:
---------------------------------------

The problem boils down to this: In some cases the x86 code generator will 
"forget" to add a "TEST" instruction after a "NOT" instruction and before a 
conditional branch. This means that the conditional branch is not based on the 
results of the "NOT" instruction as was intended by the code. Since this 
problem is occurring at such a low level, it's near impossible to link it back 
to the Java code that triggered the problem.

As for LUCENE-6557, The badly compiled method that caused the first issue is 
org/apache/lucene/uninverting/DocTermOrds$OrdWrappedTermsEnum.seekCeil() which 
was the 2nd method down on the AIOOB exception stack trace. In this new case I 
don't see that method in the stack trace, but I can't rule out that some other 
method was effected by the same bug resulting in this new issue. It's hard to 
give a probability here but I would not be surprised to find that it's the same 
issue.

> Reproducible fieldcache AIOOBE only on J9
> -----------------------------------------
>
>                 Key: LUCENE-6522
>                 URL: https://issues.apache.org/jira/browse/LUCENE-6522
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Robert Muir
>              Labels: IBM-J9
>
> Haven't dug in yet, just:
> * reproduces easily on J9
> * does not happen on Oracle JVM
> {noformat}
>    [junit4] Suite: org.apache.lucene.uninverting.TestFieldCacheVsDocValues
>    [junit4] IGNOR/A 0.51s J2 | 
> TestFieldCacheVsDocValues.testHugeBinaryValueLimit
>    [junit4]    > Assumption #1: test requires codec with limits on max binary 
> field length
>    [junit4]   2> NOTE: reproduce with: ant test  
> -Dtestcase=TestFieldCacheVsDocValues 
> -Dtests.method=testSortedSetFixedLengthVsUninvertedField 
> -Dtests.seed=831619B333C362E6 -Dtests.locale=es_UY 
> -Dtests.timezone=Atlantic/Bermuda -Dtests.asserts=true 
> -Dtests.file.encoding=US-ASCII
>    [junit4] ERROR   0.54s J2 | 
> TestFieldCacheVsDocValues.testSortedSetFixedLengthVsUninvertedField <<<
>    [junit4]    > Throwable #1: java.lang.ArrayIndexOutOfBoundsException
>    [junit4]    >      at 
> __randomizedtesting.SeedInfo.seed([831619B333C362E6:B6EC641493EA4AD3]:0)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.DocTermOrds$OrdWrappedTermsEnum.seekCeil(DocTermOrds.java:692)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.TestFieldCacheVsDocValues.assertEquals(TestFieldCacheVsDocValues.java:570)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.TestFieldCacheVsDocValues.assertEquals(TestFieldCacheVsDocValues.java:511)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.TestFieldCacheVsDocValues.doTestSortedSetVsUninvertedField(TestFieldCacheVsDocValues.java:385)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.TestFieldCacheVsDocValues.testSortedSetFixedLengthVsUninvertedField(TestFieldCacheVsDocValues.java:105)
>    [junit4]    >      at java.lang.Thread.run(Thread.java:785)
>    [junit4]   2> NOTE: reproduce with: ant test  
> -Dtestcase=TestFieldCacheVsDocValues 
> -Dtests.method=testSortedSetVariableLengthVsUninvertedField 
> -Dtests.seed=831619B333C362E6 -Dtests.locale=es_UY 
> -Dtests.timezone=Atlantic/Bermuda -Dtests.asserts=true 
> -Dtests.file.encoding=US-ASCII
>    [junit4] ERROR   0.42s J2 | 
> TestFieldCacheVsDocValues.testSortedSetVariableLengthVsUninvertedField <<<
>    [junit4]    > Throwable #1: java.lang.ArrayIndexOutOfBoundsException
>    [junit4]    >      at 
> __randomizedtesting.SeedInfo.seed([831619B333C362E6:2AB51ED6D324E426]:0)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.DocTermOrds$OrdWrappedTermsEnum.seekCeil(DocTermOrds.java:692)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.TestFieldCacheVsDocValues.assertEquals(TestFieldCacheVsDocValues.java:570)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.TestFieldCacheVsDocValues.assertEquals(TestFieldCacheVsDocValues.java:511)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.TestFieldCacheVsDocValues.doTestSortedSetVsUninvertedField(TestFieldCacheVsDocValues.java:385)
>    [junit4]    >      at 
> org.apache.lucene.uninverting.TestFieldCacheVsDocValues.testSortedSetVariableLengthVsUninvertedField(TestFieldCacheVsDocValues.java:112)
>    [junit4]    >      at java.lang.Thread.run(Thread.java:785)
>    [junit4]   2> NOTE: leaving temporary files on disk at: 
> /home/rmuir/workspace/trunk-ibm/lucene/build/misc/test/J2/temp/lucene.uninverting.TestFieldCacheVsDocValues
>  831619B333C362E6-001
>    [junit4]   2> NOTE: test params are: codec=Asserting(Lucene50): 
> {indexed=FSTOrd50, id=Lucene50(blocksize=128)}, 
> docValues:{dv=DocValuesFormat(name=Asserting), 
> field=DocValuesFormat(name=Asserting)}, sim=DefaultSimilarity, locale=es_UY, 
> timezone=Atlantic/Bermuda
>    [junit4]   2> NOTE: Linux 3.13.0-49-generic amd64/IBM Corporation 1.8.0 
> (64-bit)/cpus=8,threads=1,free=10179616,total=32243712
>    [junit4]   2> NOTE: All tests run in this JVM: [TestDocTermOrds, 
> TestNumericTerms32, TestFieldCacheVsDocValues]
>    [junit4] Completed [21/25] on J2 in 4.50s, 10 tests, 2 errors, 1 skipped 
> <<< FAILURES!
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to