[
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