Looking at the code in Logger.b (shown below), the only way that this could happen is if Logger.clearAppenders() or Logger.removeAppender(Appender) is invoked on another thread.
for (int i = 0; i < appenders.size(); i++) {
Appender a = (Appender)appenders.elementAt(i);
You can see that execution doesn't enter the for loop if size==0, so since it did size must have been greater than 0 when it was evaluated, but then when execution reached the second line there was no element at index 0, so something must have happened in between these two points. As far as I can see, it must have been another thread changing the appenders Vector.