ros2 / message_filters

BSD 3-Clause "New" or "Revised" License
73 stars 66 forks source link

SegFault at FrameId #44

Closed maxlein closed 4 years ago

maxlein commented 4 years ago

I am runnning nav2 stack and the controller node is writing

[controller_server-1] 1580394739.997408374: [osg_1.local_costmap.local_costmap_rclcpp_node] [INFO]   Message Filter dropping message: frame 'scan_link' at time 1580394739.922 for reason 'Unknown'
[controller_server-1] 1580394740.153582206: [osg_1.local_costmap.local_costmap_rclcpp_node] [INFO]   Message Filter dropping message: frame 'scan_link' at time 1580394740.077 for reason 'Unknown'
[controller_server-1] 1580394740.314822634: [osg_1.local_costmap.local_costmap_rclcpp_node] [INFO]   Message Filter dropping message: frame 'scan_link' at time 1580394740.232 for reason 'Unknown'
[controller_server-1] 1580394740.550064022: [osg_1.local_costmap.local_costmap_rclcpp_node] [INFO]   Message Filter dropping message: frame 'scan_link' at time 1580394740.475 for reason 'Unknown'
[controller_server-1] 1580394740.708030249: [osg_1.local_costmap.local_costmap_rclcpp_node] [INFO]   Message Filter dropping message: frame 'scan_link' at time 1580394740.625 for reason 'Unknown'
[controller_server-1] 1580394740.862123086: [osg_1.local_costmap.local_costmap_rclcpp_node] [INFO]   Message Filter dropping message: frame 'scan_link' at time 1580394740.783 for reason 'Unknown'
[controller_server-1] 1580394741.255866962: [osg_1.local_costmap.local_costmap_rclcpp_node] [INFO]   Message Filter dropping message: frame 'scan_link' at time 1580394741.175 for reason 'Unknown'
[controller_server-1] 1580394741.414919378: [osg_1.local_costmap.local_costmap_rclcpp_node] [INFO]   Message Filter dropping message: frame 'scan_link' at time 1580394741.333 for reason 'Unknown'

And I don't know if there is a connection to dropping messages, but I get a seg fault after some seconds.
The frame id of the scan msg is definitely set.

#0  std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (__str=..., this=0x7f009f7fb750) at /usr/include/c++/7/bits/basic_string.h:440
440           { _M_construct(__str._M_data(), __str._M_data() + __str.length()); }
[Current thread is 1 (Thread 0x7f009f7fe700 (LWP 20512))]
(gdb) bt
#0  std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string (__str=..., this=0x7f009f7fb750) at /usr/include/c++/7/bits/basic_string.h:440
#1  message_filters::message_traits::FrameId<sensor_msgs::msg::LaserScan_<std::allocator<void> >, void>::value[abi:cxx11](sensor_msgs::msg::LaserScan_<std::allocator<void> > const&) (m=...)
    at /opt/ros/eloquent/include/message_filters/message_traits.h:67
#2  tf2_ros::MessageFilter<sensor_msgs::msg::LaserScan_<std::allocator<void> >, tf2_ros::Buffer>::signalFailure (this=this@entry=0x561c853883c0, evt=..., reason=reason@entry=tf2_ros::filter_failure_reasons::Unknown)
    at /opt/ros/eloquent/include/tf2_ros/message_filter.h:683
#3  0x00007f009d5977a3 in tf2_ros::MessageFilter<sensor_msgs::msg::LaserScan_<std::allocator<void> >, tf2_ros::Buffer>::messageDropped (reason=tf2_ros::filter_failure_reasons::Unknown, evt=..., this=0x561c853883c0)
    at /opt/ros/eloquent/include/tf2_ros/message_filter.h:660
#4  tf2_ros::MessageFilter<sensor_msgs::msg::LaserScan_<std::allocator<void> >, tf2_ros::Buffer>::add (this=0x561c853883c0, evt=...) at /opt/ros/eloquent/include/tf2_ros/message_filter.h:426
#5  0x00007f009d598a8c in std::function<void (message_filters::MessageEvent<sensor_msgs::msg::LaserScan_<std::allocator<void> > const> const&)>::operator()(message_filters::MessageEvent<sensor_msgs::msg::LaserScan_<std::allocator<void> > const> const&) const (__args#0=..., this=0x561c85467a48) at /usr/include/c++/7/bits/std_function.h:706
#6  message_filters::CallbackHelper1T<message_filters::MessageEvent<sensor_msgs::msg::LaserScan_<std::allocator<void> > const> const&, sensor_msgs::msg::LaserScan_<std::allocator<void> > >::call (this=0x561c85467a40, 
    event=..., nonconst_force_copy=<optimized out>) at /opt/ros/eloquent/include/message_filters/signal1.h:74
#7  0x00007f009d598840 in message_filters::Signal1<sensor_msgs::msg::LaserScan_<std::allocator<void> > >::call (event=..., this=0x561c85513548) at /opt/ros/eloquent/include/message_filters/signal1.h:117
#8  message_filters::SimpleFilter<sensor_msgs::msg::LaserScan_<std::allocator<void> > >::signalMessage (event=..., this=0x561c85513548) at /opt/ros/eloquent/include/message_filters/simple_filter.h:133
#9  message_filters::Subscriber<sensor_msgs::msg::LaserScan_<std::allocator<void> > >::cb (e=..., this=0x561c85513540) at /opt/ros/eloquent/include/message_filters/subscriber.h:235
#10 message_filters::Subscriber<sensor_msgs::msg::LaserScan_<std::allocator<void> > >::subscribe(rclcpp::Node*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rmw_qos_profile_t)::{lambda(std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>)#1}::operator()(std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>) const (msg=..., __closure=<optimized out>)
    at /opt/ros/eloquent/include/message_filters/subscriber.h:174
#11 std::_Function_handler<void (std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>), message_filters::Subscriber<sensor_msgs::msg::LaserScan_<std::allocator<void> > >::subscribe(rclcpp::Node*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rmw_qos_profile_t)::{lambda(std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>)#1}>::_M_invoke(std::_Any_data const&, std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>&&) (__functor=..., __args#0=...) at /usr/include/c++/7/bits/std_function.h:316
#12 0x00007f009d5902e2 in std::function<void (std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>)>::operator()(std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> > const>) const (
    __args#0=std::shared_ptr<const sensor_msgs::msg::LaserScan_<std::allocator<void> >> (use count 1797718528, weak count 1253155528) = {...}, this=0x561c85510b78) at /usr/include/c++/7/bits/std_function.h:706
#13 rclcpp::AnySubscriptionCallback<sensor_msgs::msg::LaserScan_<std::allocator<void> >, std::allocator<void> >::dispatch (this=0x561c85510b38, 
    message=std::shared_ptr<sensor_msgs::msg::LaserScan_<std::allocator<void> >> (use count 7, weak count 0) = {...}, message_info=...) at /opt/ros/eloquent/include/rclcpp/any_subscription_callback.hpp:166
#14 0x00007f009d590500 in rclcpp::Subscription<sensor_msgs::msg::LaserScan_<std::allocator<void> >, std::allocator<void>, rclcpp::message_memory_strategy::MessageMemoryStrategy<sensor_msgs::msg::LaserScan_<std::allocator<void> >, std::allocator<void> > >::handle_message (this=0x561c85510a90, message=..., message_info=...) at /opt/ros/eloquent/include/rclcpp/subscription.hpp:228
#15 0x00007f00bbd5dd1f in rclcpp::executor::Executor::execute_subscription(std::shared_ptr<rclcpp::SubscriptionBase>) () from /opt/ros/eloquent/lib/librclcpp.so
#16 0x00007f00bbd5f045 in rclcpp::executor::Executor::execute_any_executable(rclcpp::executor::AnyExecutable&) () from /opt/ros/eloquent/lib/librclcpp.so
#17 0x00007f00bbd6571f in rclcpp::executors::SingleThreadedExecutor::spin() () from /opt/ros/eloquent/lib/librclcpp.so
#18 0x00007f00bb39032a in nav2_util::NodeThread::<lambda()>::operator() (__closure=0x561c8543c708) at /home/kin/alpen/ros2_ws/src/navigation/nav2/nav2_util/src/node_thread.cpp:29
#19 std::__invoke_impl<void, nav2_util::NodeThread::NodeThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda()> > (__f=...) at /usr/include/c++/7/bits/invoke.h:60
#20 std::__invoke<nav2_util::NodeThread::NodeThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda()> > (__fn=...) at /usr/include/c++/7/bits/invoke.h:95
#21 std::thread::_Invoker<std::tuple<nav2_util::NodeThread::NodeThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda()> > >::_M_invoke<0> (this=0x561c8543c708) at /usr/include/c++/7/thread:234
#22 std::thread::_Invoker<std::tuple<nav2_util::NodeThread::NodeThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda()> > >::operator() (this=0x561c8543c708) at /usr/include/c++/7/thread:243
#23 std::thread::_State_impl<std::thread::_Invoker<std::tuple<nav2_util::NodeThread::NodeThread(rclcpp::node_interfaces::NodeBaseInterface::SharedPtr)::<lambda()> > > >::_M_run(void) (this=0x561c8543c700)
    at /usr/include/c++/7/thread:186
#24 0x00007f00b97a166f in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#25 0x00007f00ba6b66db in start_thread (arg=0x7f009f7fe700) at pthread_create.c:463
#26 0x00007f00b8e5e88f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
maxlein commented 4 years ago

Wrong message_filter class. It's message_filter from tf2_ros...
Issue here.