From 208eacf680d47ee8046cacca9f9961440e2b4fbf Mon Sep 17 00:00:00 2001 From: Davide Faconti Date: Sat, 21 Sep 2024 12:12:38 +0200 Subject: [PATCH] fix issue #852: thread safety in Loggers --- include/behaviortree_cpp/loggers/abstract_logger.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/behaviortree_cpp/loggers/abstract_logger.h b/include/behaviortree_cpp/loggers/abstract_logger.h index 25df2fc28..be994944c 100644 --- a/include/behaviortree_cpp/loggers/abstract_logger.h +++ b/include/behaviortree_cpp/loggers/abstract_logger.h @@ -61,6 +61,7 @@ class StatusChangeLogger std::vector subscribers_; TimestampType type_; BT::TimePoint first_timestamp_ = {}; + std::mutex callback_mutex_; }; //-------------------------------------------- @@ -72,6 +73,7 @@ inline StatusChangeLogger::StatusChangeLogger(TreeNode* root_node) auto subscribeCallback = [this](TimePoint timestamp, const TreeNode& node, NodeStatus prev, NodeStatus status) { + std::unique_lock lk(callback_mutex_); if(enabled_ && (status != NodeStatus::IDLE || show_transition_to_idle_)) { if(type_ == TimestampType::absolute)