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)