Boost Http 服务器示例在 Ubuntu 10.10 上的 boost::thread 处崩溃

Posted

技术标签:

【中文标题】Boost Http 服务器示例在 Ubuntu 10.10 上的 boost::thread 处崩溃【英文标题】:Boost Http Server Example Crashes at boost::thread on Ubuntu 10.10 【发布时间】:2011-10-12 17:25:47 【问题描述】:

我正在尝试在 Ubuntu 10.10 上编译并运行以下示例

http://www.boost.org/doc/libs/1_47_0/doc/html/boost_asio/example/http/server3/

但它在以下位置崩溃:

// Create a pool of threads to run all of the io_services.

std::vector<boost::shared_ptr<boost::thread> > threads;
for (std::size_t i = 0; i < thread_pool_size_; ++i)

    boost::shared_ptr<boost::thread> thread(new boost::thread(
          boost::bind(&boost::asio::io_service::run, &io_service_)));
    threads.push_back(thread);

调用栈:

Thread [1] 573 [core: 0] (Suspended : Signal : SIGSEGV:Segmentation fault)  
    boost::thread::start_thread() at 0x8064a64  
    boost::thread::thread<boost::_bi::bind_t<unsigned int, boost::_mfi::mf0<unsigned int, boost::asio::io_service>, boost::_bi::list1<boost::_bi::value<boost::asio::io_service*> > > >() at thread.hpp:204 0x805e8c6   
    http::server3::server::run() at server.cpp:57 0x8059cbf 
    main() at HttpServer3.cpp:38 0x8048522  

但是,对于同一个 Eclipse CDT 项目,它不会在 Ubuntu 11.04 上崩溃。

有什么建议吗?

【问题讨论】:

我最初的猜测是 Boost.Thread 没有在您的 10.10 安装上正确构建。 我在 10.10 上成功构建了 boost 库。有趣的是在 11.04 上,我在构建 boost 时确实遇到了一些错误,但它工作正常。 你可能是对的。请参阅我自己的答案。 【参考方案1】:

看来 ildjarn 最初的猜测可能是正确的。

我发现我的 Ubuntu 10.10 上有两个版本的 boost lib。我彻底删除了它们,并安装了最新的,问题就消失了。

【讨论】:

以上是关于Boost Http 服务器示例在 Ubuntu 10.10 上的 boost::thread 处崩溃的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu下编译boost

Boost Beast服务器响应延迟1秒

boost asio HTTP Server 3 示例或 boost 错误中是不是存在错误?

经验分享ubuntu 源码编译 boost

C++ 使用 Boost.asio 和 Beast 库在正文中发送数据

Boost Python官方样例