现象:

1。 没有使用boost.log前能正常收发数据

2。加入boost.log后async_connect没有回调

fix过程:

1. gdb调试发现程序block在pthread_timed_wait.死锁? 使用helgrind没有检查出异常.

2. 难道是内存错误? valgrind的memcheck也没有发现异常

3. 重新编译boost为debug版, gdb调试发现 task_io_service的op_queue_works_的内存地址在使用boost.log前后居然从63070变成了63078。查看task_io_service.hpp发现一个outstanding_works_ 的原子变量。 在使用boost.log 前后ptype outstanding_works_发现没有使用boost.log是为std::atomic,而使用boost.log 后居然变成了boost::atomic.

解决办法:

1. 在编译程序时使用-DBOOST_ASIO_DISABLE_STD_ATOMIC

2. 重新编译boost. ./b2 -a cxxflags='-std=c++11' variant=debug install

相关文章:

  • 2021-07-26
  • 2021-09-11
  • 2021-07-25
  • 2022-01-02
  • 2021-12-31
  • 2022-01-13
  • 2022-12-23
  • 2021-08-22
猜你喜欢
  • 2022-02-10
  • 2021-07-03
  • 2022-12-23
  • 2022-01-05
  • 2021-05-27
  • 2022-01-24
  • 2021-06-11
相关资源
相似解决方案