最近在调试机器人时发现导航节点经常莫名挂死,排查了很久才最终找到并解决问题,特此记录。
通过gdb打出的挂死时程序的堆栈情况如下:
#0 0xb76edcb0 in ?? ()
#1 <signal handler called>
#2 0xb5ab8464 in tf2::BufferCore::lookupFrameNumber(std::string const&) const () from /opt/ros/indigo/lib/libtf2.so
#3 0xb5abc174 in tf2::BufferCore::canTransform(std::string const&, std::string const&, ros::Time const&, std::string*) const
() from /opt/ros/indigo/lib/libtf2.so
#4 0xb5abc280 in tf2::BufferCore::canTransform(std::string const&, ros::Time const&, std::string const&, ros::Time const&, std::string const&, std::string*) const ()
from /opt/ros/indigo/lib/libtf2.so
#5 0xb5b0f730 in tf2_ros::