C++11 Boost线程v1.53分段故障

C++11 Boost线程v1.53分段故障,c++11,boost,boost-thread,C++11,Boost,Boost Thread,下面的程序产生了一个分段错误,尽管我在代码中没有看到任何未定义的行为。已按照GCC 4.7.3进行了编译。您知道故障原因或可能的解决方法吗?另外,似乎v1.53中还不存在boost::future,因此我可能应该依赖boost::unique\u future。我无法升级到>1.53以上的任何版本,我确实需要“在线程退出时准备就绪”功能 \define BOOST\u THREAD\u提供\u签名\u打包的\u任务 #包括 #包括 名称空间th=boost; 结构{ th::打包任务; 独特的未

下面的程序产生了一个分段错误,尽管我在代码中没有看到任何未定义的行为。已按照GCC 4.7.3进行了编译。您知道故障原因或可能的解决方法吗?另外,似乎v1.53中还不存在
boost::future
,因此我可能应该依赖
boost::unique\u future
。我无法升级到>1.53以上的任何版本,我确实需要“在线程退出时准备就绪”功能

\define BOOST\u THREAD\u提供\u签名\u打包的\u任务
#包括
#包括
名称空间th=boost;
结构{
th::打包任务;
独特的未来;
void start();
无效停止();
};
void S::start(){
task=th::打包的_任务{[this](){};
future=task.get_future();
任务。在线程退出()处使线程准备就绪;
}
void S::stop(){
未来。等待();
}
int main(){
S S;
s、 start();
s、 停止();
}

我只能说这似乎在1_53/1_54中被窃听(尽管整个未来都是不相关的,不需要重现错误)。它在1_55上可以正常工作。您可能会找到修复此问题的错误报告。但我真的不太乐意去寻找它。只是为了得到一些信息
#define BOOST_THREAD_PROVIDES_SIGNATURE_PACKAGED_TASK
#include <boost/thread.hpp>
#include <boost/thread/future.hpp>

namespace th = boost;

struct S {
    th::packaged_task<void()> task;
    th::unique_future<void> future;
    void start();
    void stop();
};

void S::start() {
    task = th::packaged_task<void()>{ [this] () {}};
    future = task.get_future();                
    task.make_ready_at_thread_exit();
}

void S::stop() {
    future.wait();                
}

int main() {
    S s;
    s.start();
    s.stop();
}