micro-ROS / micro-ROS/micro_ros_setup

Not enough memory in the buffer stream - PlotJuggler and RC topic

Đang mở
#769 1 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Ngôn ngữ chính
Shell
Star
509
Fork
183
Merge trung bình
22 giờ 26 phút
Pull request đã merge (30 ngày)
7

Mô tả

Issue template

When I try to subscribe Plot Juggler to the /ap/rc topic of my custom branch, PlotJuggler always crashes reporting the following error:

terminate called after throwing an instance of 'eprosima::fastcdr::exception::NotEnoughMemoryException'
[plotjuggler-1]   what():  Not enough memory in the buffer stream
  • Hardware description: SITL
  • Installation type: Micro-ROS on ROS2 Humble
Steps to reproduce the issue
  • Clone the Ardupilot repo git clone https://github.com/tizianofiorenzani/ardupilot.git
  • CD to the ardupilot folder and checkout my branch git checkout wips/dds-rc-out
  • Install Plotjuggler apt install ros-humble-plotjuggler-ros
  • Build the ardupilot branch colcon build --packages-up-to ardupilot_sitl
  • Launch ardupilot SITL ros2 launch ardupilot_sitl sitl_dds_udp.launch.py
  • On a new terminal, verify that the topic /ap/rc is been published with ros2 topic echo /ap/rc
  • Start Plot Juggler with ros2 run plotjuggler plotjuggler
  • On the screen, select the topic /ap/rc
Expected behavior
QStandardPaths: error creating runtime directory '/run/user/1000' (Permission denied)
Loading compatible plugins from directory:  "/opt/ros/humble/lib/plotjuggler_ros"
"libDataLoadROS2.so is a DataLoader plugin"
"libDataStreamROS2.so is a DataStreamer plugin"
[WARN] [1740678396.752654369] [rclcpp]: logging was initialized more than once
"libTopicPublisherROS2.so is a StatePublisher plugin"
Number of plugins loaded:  3 

Loading compatible plugins from directory:  "/opt/ros/humble/lib/plotjuggler"
"libDataLoadCSV.so is a DataLoader plugin"
"libDataLoadMCAP.so is a DataLoader plugin"
"libDataLoadULog.so is a DataLoader plugin"
"libDataStreamSample.so is a DataStreamer plugin"  ...disabled, unless option -t is used
"libDataStreamUDP.so is a DataStreamer plugin"
"libDataStreamWebSocket.so is a DataStreamer plugin"
"libDataStreamZMQ.so is a DataStreamer plugin"
"libParserDataTamer.so is a MessageParser plugin"
"libParserROS1.so is a MessageParser plugin"
"libParserROS2.so is a MessageParser plugin"
"libProtobufParser.so is a MessageParser plugin"
"libPublisherCSV.so is a StatePublisher plugin"
Type conversion already registered from type QString to type QwtText
"libToolboxFFT.so is a Toolbox plugin"
"libToolboxLuaEditor.so is a Toolbox plugin"
Type conversion already registered from type QString to type QwtText
"libToolboxQuaternion.so is a Toolbox plugin"
Number of plugins loaded:  14 

Loading compatible plugins from directory:  "/home/avas/.local/share/PlotJuggler"
Number of plugins loaded:  0 

terminate called after throwing an instance of 'eprosima::fastcdr::exception::NotEnoughMemoryException'
  what():  Not enough memory in the buffer stream
Stack trace (most recent call last) in thread 1111430:
#25   Object "", at 0xffffffffffffffff, in 
#24   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x74da6ae8d84f, in __xmknodat
#23   Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x74da6adfbac2, in pthread_condattr_setpshared
#22   Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x74da6b175252, in std::error_code::default_error_condition() const
#21   Object "/opt/ros/humble/lib/plotjuggler_ros/libDataStreamROS2.so", at 0x74da5ff35e2a, in DataStreamROS2::start(QStringList*)
#20   Object "/opt/ros/humble/lib/librclcpp.so", at 0x74da6c8edc53, in rclcpp::Executor::spin_once(std::chrono::duration<long, std::ratio<1l, 1000000000l> >)
#19   Object "/opt/ros/humble/lib/librclcpp.so", at 0x74da6c8f79a0, in rclcpp::Executor::spin_once_impl(std::chrono::duration<long, std::ratio<1l, 1000000000l> >)
#18   Object "/opt/ros/humble/lib/librclcpp.so", at 0x74da6c8f602e, in rclcpp::Executor::execute_any_executable(rclcpp::AnyExecutable&)
#17   Object "/opt/ros/humble/lib/librclcpp.so", at 0x74da6c8f5689, in rclcpp::Executor::execute_subscription(std::shared_ptr<rclcpp::SubscriptionBase>)
#16   Object "/opt/ros/humble/lib/librclcpp.so", at 0x74da6c901198, in rclcpp::GenericSubscription::handle_serialized_message(std::shared_ptr<rclcpp::SerializedMessage> const&, rclcpp::MessageInfo const&)
#15   Object "/opt/ros/humble/lib/plotjuggler_ros/libDataStreamROS2.so", at 0x74da5ff347ab, in DataStreamROS2::messageCallback(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<rclcpp::SerializedMessage>)
#14   Object "/opt/ros/humble/lib/plotjuggler_ros/libDataStreamROS2.so", at 0x74da5ff346c1, in DataStreamROS2::messageCallback(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::shared_ptr<rclcpp::SerializedMessage>)
#13   Object "/opt/ros/humble/lib/plotjuggler_ros/libDataStreamROS2.so", at 0x74da5ff40240, in PJ::CompositeParser::parseMessage(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, PJ::MessageRef, double&)
#12   Object "/opt/ros/humble/lib/plotjuggler/libParserROS2.so", at 0x74da53e837cf, in ParserROS::parseMessage(PJ::MessageRef, double&)
#11   Object "/opt/ros/humble/lib/plotjuggler/libParserROS2.so", at 0x74da53e9fa7c, in RosMsgParser::Parser::deserialize(nonstd::span_lite::span<unsigned char const, 18446744073709551615ul>, RosMsgParser::FlatMessage*, RosMsgParser::Deserializer*) const
#10   Object "/opt/ros/humble/lib/plotjuggler/libParserROS2.so", at 0x74da53e9f7c0, in RosMsgParser::ROSField::getMessagePtr(std::unordered_map<RosMsgParser::ROSType, std::shared_ptr<RosMsgParser::ROSMessage>, std::hash<RosMsgParser::ROSType>, std::equal_to<RosMsgParser::ROSType>, std::allocator<std::pair<RosMsgParser::ROSType const, std::shared_ptr<RosMsgParser::ROSMessage> > > > const&) const
#9    Object "/opt/ros/humble/lib/plotjuggler/libParserROS2.so", at 0x74da53e9efcb, in RosMsgParser::ROSField::getMessagePtr(std::unordered_map<RosMsgParser::ROSType, std::shared_ptr<RosMsgParser::ROSMessage>, std::hash<RosMsgParser::ROSType>, std::equal_to<RosMsgParser::ROSType>, std::allocator<std::pair<RosMsgParser::ROSType const, std::shared_ptr<RosMsgParser::ROSMessage> > > > const&) const
#8    Object "/opt/ros/humble/lib/plotjuggler/libParserROS2.so", at 0x74da53e9988c, in RosMsgParser::FastCDR_Deserializer::deserialize(RosMsgParser::BuiltinType)
#7    Object "/opt/ros/humble/lib/libfastcdr.so.1", at 0x74da677ae1d2, in 
#6    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x74da6b1474d7, in __cxa_throw
#5    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x74da6b147276, in std::terminate()
#4    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x74da6b14720b, in std::rethrow_exception(std::__exception_ptr::exception_ptr)
#3    Object "/lib/x86_64-linux-gnu/libstdc++.so.6", at 0x74da6b13bb9d, in __cxa_throw_bad_array_new_length
#2    Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x74da6ad8f7f2, in abort
#1    Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x74da6ada9475, in raise
#0    Object "/lib/x86_64-linux-gnu/libc.so.6", at 0x74da6adfd9fc, in pthread_kill
Aborted (Signal sent by tkill() 1111283 1000)
[ros2run]: Aborted

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Tái hiện lỗi crash bằng các bước SITL và PlotJuggler được liệt kê, sau đó bắt đầu từ DataStreamROS2::messageCallback và lần theo stack vào ParserROS::parseMessage và RosMsgParser::FastCDR_Deserializer::deserialize. So sánh dữ liệu message /ap/rc với những gì deserializer mong đợi. Hoàn thành khi việc subscribe /ap/rc trong PlotJuggler không còn bị abort với NotEnoughMemoryException.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Lĩnh vực
robotics
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.