Details
- 
    Bug 
- 
    Resolution: Unresolved
- 
    Blocker 
- 
    None
- 
    1.2.3
- 
    linux X86_64 LOGBACK VERSION :  
Description
class Worker extends Thread { public void run() { AsyncAppenderBase<E> parent = AsyncAppenderBase.this; AppenderAttachableImpl<E> aai = parent.aai; while (parent.isStarted()) { try { E e = parent.blockingQueue.take(); aai.appendLoopOnAppenders(e); } catch (InterruptedException ie) { break; } } addInfo("Worker thread will flush remaining events before exiting. "); for (E e : parent.blockingQueue) { aai.appendLoopOnAppenders(e); parent.blockingQueue.remove(e); } aai.detachAndStopAllAppenders(); } }
There is a worker object in the object AsyncAppenderBase。
if run() method don't catch the exception and error,when OutOfMemory occurs。this thread will dead
like this:

OOM make the appender-worker dead
when the blockingQueue(use ArrayBlockingQueue) is full,the "put" thead will hang forever!!!!
First of all, thank you for answering my doubts