Andrew Dinn wrote:
It could be a concurrency bug. The relevant code is
. . .
105 for (Entry e = header.next; e != header; e = e.next) {
106 if (o.equals(e.element))
107 return index;
108 index++;
109 }
. . .
Oops, first off, apologies for posting an analysis which was obviously
wrong.
However, I believe a concurrent remove may also cause your problem. The
remove() method sets the next field of the removed Entry to null. So, if
the loop above yields at a loop back edge and a concurrent call to
remove operates on Entry e then you could get the intermittent NPE you
are seeing.
regards,
Andrew Dinn
-----------