下面的代码导致在Windows 7上运行崩溃。我已经通过Qt Creator尝试了MSVC2013 x64和MSVC2012 x86编译器。两者都导致问题。
调用boost :: thread :: interrupt()时发生崩溃。提供错误消息:
#include <iostream>
#include <boost/thread.hpp>
// A function that will run until interrupted
void test_function()
{
try
{
while(true)
{
boost::this_thread::interruption_point();
}
}
catch(...)
{
}
}
// Should start a thread, wait for a second and then interupt the thread
int main()
{
boost::thread thread(&test_function);
boost::this_thread::sleep_for(boost::chrono::seconds(1));
thread.interrupt();
thread.join();
return 0;
}
升级版本是1.55并且已经在我的机器上使用上面提到的两个编译器进行了编译。
报告的错误消息是: 异常在0x7fefd44940d,代码:0xe06d7363:C ++异常,flags = 0x1(执行不能 继续)(第一次机会)在c:\ boost \ boost_1_55_0 \ libs \ thread \ src \ win32 \ thread.cpp:604
我无法获得堆栈跟踪,大概是因为它是对std :: terminate的调用,而不是段错误。