FULL PRODUCT VERSION :
java version "1.6.0_20"
Java(TM) SE Runtime Environment (build 1.6.0_20-b02)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01, mixed mode)
ADDITIONAL OS VERSION INFORMATION :
Linux <hostname> 2.6.18-194.3.1.el5 #1 SMP Thu May 13 13:08:30 EDT 2010 x86_64 GNU/Linux
EXTRA RELEVANT SYSTEM CONFIGURATION :
Dual network cards, otherwise standard build
A DESCRIPTION OF THE PROBLEM :
This is sporadic and I can't build a repeatable test case, but String.indexOf() will sometimes return an index past the end of a string, when it should return -1.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
I can't reproduce this reliably. I have added logging to capture as much info as I can - in the latest occurrence, my test string was length 58201. Here's an extract of my source code:
// I include the next line to illustrate how my string to be searched is created
String message = someLargerString.substring(start, end);
// At this point, message.length() returns 58201
// Here's how the search string is built:
String fieldname = "holds";
String search = "<" + fieldname + ">";
// Now here's the problem...(note: message does NOT contain the search string)
int index = message.indexOf(search);
// At this point, index = 58237
This happens only sporadically - it will run fine dozens or hundreds of times before failing. Restarting the program (new JVM instance) means it will run fine again for a while, but once it starts doing this, it keeps doing it until I shut down the JVM and restart.
EXPECTED VERSUS ACTUAL BEHAVIOR :
indexOf should have returned -1
indexOf returned a value larger than the length of the string being searched
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
I can't reproduce this reliably.
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
Check output of indexOf for a value larger than the string length, and treat such an occurrence as -1.