We are experiencing weird bug at production environment we cannot debug nor inject logging code. I am trying to figure this up but following stack trace confuse me.
That's almost certainly a concurrency issue... You probably have two threads that modify the collection at the same time, and the ArrayList class is not designed to support concurrent access. A race condition occurs, which sometimes leads one of the threads to attempt to write at a position outside the bounds of the array.
Try to protect all accesses to the collection using lock statements, or use a synchronized wrapper of the collection (using the ArrayList.Synchronized method)