From f39a27fbc116131ffeee1080e107a022b020ae78 Mon Sep 17 00:00:00 2001 From: Matthew Gabeler-Lee Date: Thu, 6 Aug 2026 21:23:34 -0400 Subject: [PATCH] fix: correct use-after-free race causing frequent SIGSEGV when using the toggle_color/depth services (#208) * fix: correct use-after-free race causing frequent SIGSEGV when using the toggle_color/depth services (cherry picked from commit 2d59a581a82b81088971dccda353b96a527ee681) * fix: add interleave_frame_enable handling in toggleSensor Introduce interleave_frame_enable variable to manage frame interleaving during sensor toggling. Signed-off-by: obshenlanzhou --------- Signed-off-by: obshenlanzhou Co-authored-by: obshenlanzhou --- orbbec_camera/src/ros_service.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/orbbec_camera/src/ros_service.cpp b/orbbec_camera/src/ros_service.cpp index 8c4be54b..bbf8f012 100644 --- a/orbbec_camera/src/ros_service.cpp +++ b/orbbec_camera/src/ros_service.cpp @@ -1940,7 +1940,11 @@ bool OBCameraNode::toggleSensor(const stream_index_pair& stream_index, bool enab std::string& msg) { std::lock_guard lock(device_lock_); try { - pipeline_->stop(); + const bool interleave_frame_enable = interleave_frame_enable_; + stopStreams(); + interleave_frame_enable_ = interleave_frame_enable; + stopColorFrameThreads(); + clearColorFrameQueues(); enable_stream_[stream_index] = enabled; setupProfiles(); startStreams();