提升更新问题与我的代码
Boost Update Issue with my code
我最近更新了我的boost到1.59,并安装在/usr/local。我的系统默认安装在/usr/中,是1.46。我用的是ubuntu 12.04。
我的代码库使用ROS Hydro(机器人操作系统)。我有一个相当大的代码库,在更新之前工作得很好。但是现在我得到terminate called after throwing an instance of 'boost::thread_interrupted'
My Stack trace
0x00007ffff573d0d5 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) where
#0 0x00007ffff573d0d5 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1 0x00007ffff574083b in __GI_abort () at abort.c:91
#2 0x00007ffff608f69d in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3 0x00007ffff608d846 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4 0x00007ffff608d873 in std::terminate() () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5 0x00007ffff608d96e in __cxa_throw () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6 0x00007ffff7f1cc3e in boost::this_thread::interruption_point() () from /usr/local/lib/libboost_thread.so.1.59.0
#7 0x00007ffff7001752 in bool boost::condition_variable::timed_wait<boost::date_time::subsecond_duration<boost::posix_time::time_duration, 1000000l> >(boost::unique_lock<boost::mutex>&, boost::date_time::subsecond_duration<boost::posix_time::time_duration, 1000000l> const&) () from /opt/ros/hydro/lib/libroscpp.so
#8 0x00007ffff6fff429 in ros::CallbackQueue::callAvailable(ros::WallDuration) () from /opt/ros/hydro/lib/libroscpp.so
#9 0x00007ffff7045f90 in ros::SingleThreadedSpinner::spin(ros::CallbackQueue*) () from /opt/ros/hydro/lib/libroscpp.so
#10 0x00007ffff702cd1b in ros::spin() () from /opt/ros/hydro/lib/libroscpp.so
#11 0x000000000041b795 in main ()
显示异常来自ros core库,本不应该发生。
可执行文件的ldd为:
$ ldd devel/lib/visensor_node/visensor_nod
linux-vdso.so.1 => (0x00007ffff934d000)
libvisensor.so => /home/eeuser/ros_workspaces/HeloRosProject/devel/lib/libvisensor.so (0x00007f55489e10
00)
libopencv_core.so.2.4 => /opt/ros/hydro/lib/libopencv_core.so.2.4 (0x00007f55485b6000)
libopencv_calib3d.so.2.4 => /opt/ros/hydro/lib/libopencv_calib3d.so.2.4 (0x00007f5548321000)
libimage_transport.so => /opt/ros/hydro/lib/libimage_transport.so (0x00007f55480a0000)
libroslib.so => /opt/ros/hydro/lib/libroslib.so (0x00007f5547e8f000)
libroscpp.so => /opt/ros/hydro/lib/libroscpp.so (0x00007f5547b53000)
librosconsole.so => /opt/ros/hydro/lib/librosconsole.so (0x00007f554792d000)
libdynamic_reconfigure_config_init_mutex.so => /opt/ros/hydro/lib/libdynamic_reconfigure_config_init_mutex.so (0x00007f5547727000)
libroscpp_serialization.so => /opt/ros/hydro/lib/libroscpp_serialization.so (0x00007f5547524000)
librostime.so => /opt/ros/hydro/lib/librostime.so (0x00007f55472fd000)
libboost_system.so.1.46.1 => /usr/lib/libboost_system.so.1.46.1 (0x00007f55470cb000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5546eae000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f5546bae000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f55468b1000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f554669b000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f55462dc000)
libboost_thread.so.1.59.0 => /usr/local/lib/libboost_thread.so.1.59.0 (0x00007f55462b6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5548a79000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f554609f000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f5545e97000)
libopencv_flann.so.2.4 => /opt/ros/hydro/lib/libopencv_flann.so.2.4 (0x00007f5545c24000)
libopencv_imgproc.so.2.4 => /opt/ros/hydro/lib/libopencv_imgproc.so.2.4 (0x00007f5545790000)
libopencv_features2d.so.2.4 => /opt/ros/hydro/lib/libopencv_features2d.so.2.4 (0x00007f55454e9000)
libmessage_filters.so => /opt/ros/hydro/lib/libmessage_filters.so (0x00007f55452e3000)
libtinyxml.so.2.6.2 => /usr/lib/libtinyxml.so.2.6.2 (0x00007f55450ce000)
libclass_loader.so => /opt/ros/hydro/lib/libclass_loader.so (0x00007f5544eb1000)
libboost_signals.so.1.46.1 => /usr/lib/libboost_signals.so.1.46.1 (0x00007f5544c9c000)
libboost_filesystem.so.1.46.1 => /usr/lib/libboost_filesystem.so.1.46.1 (0x00007f5544a7e000)
libconsole_bridge.so => /opt/ros/hydro/lib/libconsole_bridge.so (0x00007f5544874000)
librospack.so => /opt/ros/hydro/lib/librospack.so (0x00007f554462c000)
libboost_thread.so.1.46.1 => /usr/lib/libboost_thread.so.1.46.1 (0x00007f5544413000)
libxmlrpcpp.so => /opt/ros/hydro/lib/libxmlrpcpp.so (0x00007f55441f5000)
libcpp_common.so => /opt/ros/hydro/lib/libcpp_common.so (0x00007f5543fec000)
librosconsole_log4cxx.so => /opt/ros/hydro/lib/librosconsole_log4cxx.so (0x00007f5543dda000)
librosconsole_backend_interface.so => /opt/ros/hydro/lib/librosconsole_backend_interface.so (0x00007f5543bd8000)
liblog4cxx.so.10 => /usr/lib/liblog4cxx.so.10 (0x00007f55437f8000)
libboost_regex.so.1.46.1 => /usr/lib/libboost_regex.so.1.46.1 (0x00007f55434f6000)
libboost_system.so.1.59.0 => /usr/local/lib/libboost_system.so.1.59.0 (0x00007f55434f0000)
libPocoFoundation.so.9 => /usr/lib/libPocoFoundation.so.9 (0x00007f554319f000)
libboost_program_options.so.1.46.1 => /usr/lib/libboost_program_options.so.1.46.1 (0x00007f5542f39000)
libpython2.7.so.1.0 => /usr/lib/libpython2.7.so.1.0 (0x00007f5542a3c000)
libaprutil-1.so.0 => /usr/lib/libaprutil-1.so.0 (0x00007f5542818000)
libapr-1.so.0 => /usr/lib/libapr-1.so.0 (0x00007f55425df000)
libicuuc.so.48 => /usr/lib/libicuuc.so.48 (0x00007f5542275000)
libicui18n.so.48 => /usr/lib/libicui18n.so.48 (0x00007f5541eac000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f5541ca8000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f5541a6b000)
libssl.so.1.0.0 => /lib/x86_64-linux-gnu/libssl.so.1.0.0 (0x00007f554180c000)
libcrypto.so.1.0.0 => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 (0x00007f5541431000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007f554122e000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007f5540ff4000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f5540dca000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f5540bc5000)
libicudata.so.48 => /usr/lib/libicudata.so.48 (0x00007f553f854000)
In particular this might be of interest :
$ ldd devel/lib/visensor_node/visensor_node | grep libboost
libboost_system.so.1.46.1 => /usr/lib/libboost_system.so.1.46.1 (0x00007fcc9abdb000)
libboost_thread.so.1.59.0 => /usr/local/lib/libboost_thread.so.1.59.0 (0x00007fcc99dc6000)
libboost_signals.so.1.46.1 => /usr/lib/libboost_signals.so.1.46.1 (0x00007fcc987ac000)
libboost_filesystem.so.1.46.1 => /usr/lib/libboost_filesystem.so.1.46.1 (0x00007fcc9858e000)
libboost_thread.so.1.46.1 => /usr/lib/libboost_thread.so.1.46.1 (0x00007fcc97f23000)
libboost_regex.so.1.46.1 => /usr/lib/libboost_regex.so.1.46.1 (0x00007fcc97006000)
libboost_system.so.1.59.0 => /usr/local/lib/libboost_system.so.1.59.0 (0x00007fcc97000000)
libboost_program_options.so.1.46.1 => /usr/lib/libboost_program_options.so.1.46.1 (0x00007fcc96a49000)
libvissensor .so
linux-vdso.so.1 => (0x00007fff7e3fe000)
libboost_thread.so.1.59.0 => /usr/local/lib/libboost_thread.so.1.59.0 (0x00007f29b4b60000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f29b4832000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f29b4536000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f29b4320000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f29b3f60000)
/lib64/ld-linux-x86-64.so.2 (0x00007f29b4c1d000)
libboost_system.so.1.59.0 => /usr/local/lib/libboost_system.so.1.59.0 (0x00007f29b3f5b000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f29b3d53000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f29b3b35000)
我注意到,由于一些有趣的原因,两个boost库都链接在一起。版本1.46和1.59。我应该如何修复这个错误?
ROS Hydro与Boost 1.59不兼容。如果你在安装Boost 1.59的同时也安装了ROS Hydro,你就会遇到问题。就像在下面的ROS答案中解释的那样,但为了完整,我也会复制其中的一段摘录作为我的答案。
http://answers.ros.org/question/170406/ros-hydro-and-boost-148/ROS的源安装将与其他版本的但是由于二进制文件不兼容的可能性二进制版本的ROS必须安装在相同版本的它们是用助推器建造的。如果你想用ROS版本的boost以外的标准版本,您将不得不构建ROS from source.
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 为什么我的代码在输出中增加了93天
- 0-1背包代码中的错误.我的代码中有什么错误
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 在我的代码中,获得最大的Pair Wise产品C++和输出并不总是正确的
- 为什么我的C++代码中出现'Segmentation Fault: 11'行?
- 是否值得降低我的代码的可读性,以便在出现内存不足错误时提供异常安全性?
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 我的代码运行良好,但在游戏循环中中断
- 如何使用递归循环我的代码(当用户输入无效输入时,它会再次提示他们)?
- 我认为我的代码很好,但它在 cin a 之后停止并且没有进一步?
- 我的代码中的意外价值以及我如何修复它
- 为什么 rand 不在我的代码中生成随机数?
- 编写了一个C++代码来检查表达式是否具有平衡括号并且我的代码未运行.我已经卡了一天了
- 如何改进我的代码,使其不会因超时而终止?(黑客排名挑战)
- 无法找出我的代码中的内存泄漏
- 我不明白为什么我的代码不起作用并且需要更长的时间来运行
- 我正在尝试创建一个菜单,但我的代码一直在循环