Paweł Janicki created THRIFT-3233:
-------------------------------------

             Summary: Fix ThreadManager::Impl::removeWorker undefined behavior
                 Key: THRIFT-3233
                 URL: https://issues.apache.org/jira/browse/THRIFT-3233
             Project: Thrift
          Issue Type: Bug
          Components: C++ - Library
    Affects Versions: 0.9.2
            Reporter: Paweł Janicki
            Priority: Critical


ThreadManager::Impl::removeWorker is not joining worker properly.
It possible that the not joined worker will continue to reference destructed 
ThreadManager's non-static members causing crash.

It is caused by removeWorker() implementation which waits for workers to 
decrement the ThreadManager's workerCount_. Once value is decremented 
removeWorker() assumes the worker thread joined, while in fact the worker 
thread continues to execute some more code which adds the worker thread to 
destruction list which list may be just freed due to ThreadManager object 
destruction.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to