[ https://issues.apache.org/jira/browse/THRIFT-1606?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
alexandre parenteau updated THRIFT-1606: ---------------------------------------- Attachment: THRIFT-1606.patch.txt Patch against current 0.8.x > Race condition in BoostThreadFactory.cpp > ---------------------------------------- > > Key: THRIFT-1606 > URL: https://issues.apache.org/jira/browse/THRIFT-1606 > Project: Thrift > Issue Type: Bug > Components: C++ - Library > Affects Versions: 0.8, 0.9 > Environment: Debian, Redhat, Windows > Reporter: alexandre parenteau > Labels: patch > Fix For: 0.8 > > Attachments: THRIFT-1606.patch.txt > > Original Estimate: 2h > Remaining Estimate: 2h > > During deployment, we noticed a bug inside the new (optional) boost thread > replacement of pthread. > It moves the line: > state_ = starting; > from after the creation of the boost::thread to immediately before it. The > bug was that one of the first pieces of threadMain (the thread routine of the > thread being created) is: > if (thread->state_ != starting) { > return (void*)0; > } > So there was a race condition between the line that set state_ to "starting", > and the line that checked to make sure that it was "starting". That ended > meaning that sometimes calling "start()" would not result in the thread's > runnable being called. > Testing: this was tested in production, but NOT with thrift test suite > (however I believe ./configure --enable_boostthreads and testing will cover > this) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira