Timothy Stack created LOG4J2-738:
------------------------------------

             Summary: RollingFileManager deadlock if async action thread fails 
to start
                 Key: LOG4J2-738
                 URL: https://issues.apache.org/jira/browse/LOG4J2-738
             Project: Log4j 2
          Issue Type: Bug
          Components: Appenders
    Affects Versions: 2.0-rc1
         Environment: amazon linux
            Reporter: Timothy Stack


The symptom we're seeing is a thread stuck trying to acquire the semaphore in 
RollingFileManager.rollover().  It looks like the RollingFileManager can fail 
to release the semaphore if there is an exception during thread start for the 
async path in the rollover() method.

I think this is the relevant chunk of code:

                if (success && descriptor.getAsynchronous() != null) {
                    LOGGER.debug("RollingFileManager executing async {}", 
descriptor.getAsynchronous());
                    thread = new Thread(new 
AsyncAction(descriptor.getAsynchronous(), this));
                    thread.start();
                }
                return true;
            }
            return false;
        } finally {
            if (thread == null) {
                semaphore.release();
            }
        }

So, if thread start fails (because of OOM), the 'thread' variable will be != 
null and so the semaphore won't be released.




--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to