An infinite java.io.IOException can occurs in when a session.close(false) is called in a IoFilter.exceptionCaught().
AbstractPollingIoProcessor.flush(time) (line 777):
This method flush all sessions contained in flushingSession. It does that until there is no more flushingSession
AbstractPollingIoProcessor.flushNow(session,time) (line 832):
Process write request.
If an exception occurs during the write, IoFilter.exceptionCaught() is called ;
IoFilter.exceptionCaught() (user code):
AbstractIoSession.close(false): (line 286) call closeOnFlush()
add a CLOSE_REQUEST into the WriteQueue and flush() the session.
this session is then appended to the flushingSessions.
Since the exception handling code in flushNow() doesn't reset the session.getCurrentWriteRequest(), the writeRequestQueue is never polled and the processor will try to process the same write request infinitly.