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

Uwe Schindler commented on LUCENE-4948:
---------------------------------------

This is easy to explain: J9 does not know compressed oops. On Oracle 64 bit 
JVMs the pointers are compressed, so a reference is 32 bits, which is identical 
to the size of ints. So they grow identical. In IBM J9 (64 bit, it only fails 
with 64 bits!) a reference is 8 bytes. So the reference array grows different 
than the int[] array.

This bug also affect useres with Oracle JDK, if the have > 32 Gig of heap...

Whenever we use ArrayUtil.grow() we have to take care that the sizes may 
differ. Please don't change the growing pattern, the code should (when it 
requires that several arrays are sized in paralel, calculate the new size 
before and use a suitable type to do that).

A good test would be: We make the growing pattern in ArrayUtil allow "test 
mode" maybe and make the factor random? Just an idea. Maybe we can do this 
before running tests using bytecode modification.
                
> Stink bug in PostingsHighlighter
> --------------------------------
>
>                 Key: LUCENE-4948
>                 URL: https://issues.apache.org/jira/browse/LUCENE-4948
>             Project: Lucene - Core
>          Issue Type: Bug
>          Components: modules/highlighter
>            Reporter: Michael McCandless
>             Fix For: 5.0, 4.4
>
>
> This test fail reproduces on IBM J9:
> {noformat}
> NOTE: reproduce with: ant test  -Dtestcase=TestPostingsHighlighter 
> -Dtests.method=testCambridgeMA -Dtests.seed=2A9A93DAC39E0938 
> -Dtests.multiplier=3 -Dtests.slow=true -Dtests.locale=es_HN 
> -Dtests.timezone=America/Yellowknife -Dtests.file.encoding=UTF-8
> {noformat}
> {noformat}
> Stack Trace:
> java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 37
>         at 
> __randomizedtesting.SeedInfo.seed([2A9A93DAC39E0938:AB8FF071AD305139]:0)
>         at 
> org.apache.lucene.search.postingshighlight.Passage.addMatch(Passage.java:53)
>         at 
> org.apache.lucene.search.postingshighlight.PostingsHighlighter.highlightDoc(PostingsHighlighter.java:547)
>         at 
> org.apache.lucene.search.postingshighlight.PostingsHighlighter.highlightField(PostingsHighlighter.java:425)
>         at 
> org.apache.lucene.search.postingshighlight.PostingsHighlighter.highlightFields(PostingsHighlighter.java:364)
>         at 
> org.apache.lucene.search.postingshighlight.PostingsHighlighter.highlightFields(PostingsHighlighter.java:268)
>         at 
> org.apache.lucene.search.postingshighlight.PostingsHighlighter.highlight(PostingsHighlighter.java:198)
>         at 
> org.apache.lucene.search.postingshighlight.TestPostingsHighlighter.testCambridgeMA(TestPostingsHighlighter.java:373)
> {noformat}
> I think it's because J9 grows arrays in a different progression than other 
> JVMs ... we should fix PostingsHighlighter to forcefully grow the arrays to 
> the same length instead of this:
> {noformat}
>     if (numMatches == matchStarts.length) {
>       matchStarts = ArrayUtil.grow(matchStarts, numMatches+1);
>       matchEnds = ArrayUtil.grow(matchEnds, numMatches+1);
>       BytesRef newMatchTerms[] = new 
> BytesRef[ArrayUtil.oversize(numMatches+1, 
> RamUsageEstimator.NUM_BYTES_OBJECT_REF)];
>       System.arraycopy(matchTerms, 0, newMatchTerms, 0, numMatches);
>       matchTerms = newMatchTerms;
>     }
> {noformat}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to