I'm encountering something on an E70.

My code maintains a sorted Vector of objects, and the display is a javax.microedition.lcdui.List with one item per object in the Vector instance, shown in the same order. I'm using List.set(,,) and this method is occasionally throwing IndexOutOfBoundsException .

To begin with, my on-device debugging was showing vector.size()=7 , list.size()=7, index=5, and a caught exception. Refactoring the code to catch exceptions thrown by list.set(,,) only and not any other statements showed things like vector.size()=7 , list.size()=1, index=5, and a caught exception.

It appears to me that some Java and non-Java alert panels were shown -- a Java confirmation panel from my asking to confirm the current operation, and non-Java UI concerning picking a gateway for an HTTP connection, and when these disappear and the List instance redraws, it seems to temporarily remove all its items and add them back; trying to modify the Item you expect to be at a particular index doesn't work if it's been temporarily removed!

My code is multithreaded; the HTTP request and response processing occurs on a different thread to the J2ME GUI thread.

Does javax.microedition.lcdui.List reconstruct its private array of Items sometimes?

This looks to me a bit like "S60 3Ed: App. closed: lcdui crash - 2007-01-29, 14:49" in the Known Issues sticky thread, involving Martin Valfridsson and the_mincer, concerning javax.microedition.lcdui.Form .