Oracle/Sun Java Bugs

Sometimes Lucene runs amok of bugs in Oracle's / Sun's Java implementation. In certain cases we whittle it down to a small test case, open an issue with Oracle, and hopefully Oracle fixes it. In other cases we know the bug is in the JRE but we haven't narrowed it enough to open a bug with Sun. Sometimes we can work out a simple workaround in Lucene.

We try to open a Lucene mirror bug to provide details on how Lucene is affected, iterate on a compact test case, etc.

If you are affected by one of these issues that Oracle's Java has yet to accept or resolve, or simply have some spare votes, please consider adding your vote to the bug (on Oracle's bug page):

Oracle bug

Lucene mirror bug

Impact to Lucene

State, Priority

Workaround

6265734

LUCENE-573

NIOFSDirectory has very poor performance on Windows

Accepted, Low

Use FSDirectory or MMapDirectory on Windows

6478546

LUCENE-1566

You hit a false OutOfMemoryException when loading norms in an index with many docs

Accepted, Low

Locally patch Lucene to load large contiguous byte sequences in chunks

6707044

LUCENE-1282

Index corruption

Fixed as of 1.6.0_10, High

Lucene code base has a workaround in it

4724038

LUCENE-1658 LUCENE-1669

MMapDirectory won't close files until GC (higher transient disk usage than other FSDir); MMapDirectory returns 0 bytes when used for read/write access in remote (SMB/CIFS) mount

Cause Known, Low

Use a different Directory implementation

(No Oracle bug yet)

LUCENE-1342

SEGV during indexing, with Java 1.6 64 bit

(No compact test case yet)

None known

(No Oracle bug yet)

Discussed here and here

On 64 bit JREs, reading from files may hang (??)

(Still characterizing)

None known

6588260

LUCENE-2449

No impact as of 3.1/4.0 -- we now avoid calling new String(int[], int, int)

Fix Delivered, Bug

6240963

LUCENE-2685

Fix Delivered, High

xml-query-parser's XSLT transforms fail under some locales

Upgrade to Java 6, use a different JRE vendor, plug in an alternate, more up-to-date XSL engine like Apache XALAN, or set system property telling TransformerFactory to use the non byte-code generating bundled XSL engine in Java 5

5091921

LUCENE-2975

readVInt() returns wrong results

not sure

Lucene code base has a workaround in it

7044738

LUCENE-3346

readVInt() returns wrong results

8-Fix Available, Medium

use Java 6 or Java 7u1

7070134

LUCENE-3335

Porter Stemmer crashes JRE

8-Fix Available, Low

-XX:-UseLoopPredicate or Java 7u1

7104012

LUCENE-3301

BreakIterators (e.g. in analyzers) crash on certain inputs

Accepted, Low

Lucene code base has a workaround in it

CR6822370

LUCENE-3235

Concurrent Classes suffer from a race in LockSupport park() arising from weak memory models

Fixed, High

Use -XX:+UseMembar if you are running on a JVM < 1.6u18 see this writeup for details