Not enough memory in the buffer stream - PlotJuggler and RC topic
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 25/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 停滞
- 領域
- robotics
調査の方向性
記載されているSITLとPlotJugglerの手順でクラッシュを再現し、その後DataStreamROS2::messageCallbackから開始して、スタックをParserROS::parseMessageおよびRosMsgParser::FastCDR_Deserializer::deserializeまで追ってください。/ap/rcのメッセージデータをデシリアライザーの想定と比較してください。PlotJugglerで/ap/rcをサブスクライブしてもNotEnoughMemoryExceptionでアボートしなくなれば完了です。
索引モデルが issue の本文から書いたものです。
説明
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/rcis been published withros2 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
- 主要言語
- Shell
- スター
- 514
- フォーク
- 184
- 平均マージ
- 22時間 26分
- マージ済み PR(30日)
- 7
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
micro-ROS/micro_ros_setup のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
micro-ROS/micro_ros_setup#837 · コメント 1 件 · リアクション 1 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
micro-ROS/micro_ros_setup#814 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
micro-ROS/micro_ros_setup#809 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 38/100
micro-ROS/micro_ros_setup#808 · コメント 2 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
micro-ROS/micro_ros_setup#806 ·
micro-ROS/micro_ros_setup の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
microsoft/WindowsDeveloperConfig#139 ·
メンテナーはふだん 1 日以内に返信
-
package-update
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
oSoWoSo/vOid_Community_repOsitory#248 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
termux/termux-packages#32243 · コメント 8 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1時間未満 初心者へのやさしさ 92/100
obra/superpowers#2455 ·
メンテナーはふだん 5 日以内に返信