From ade3d24804110a6632176107a45a00c4ebec82cb Mon Sep 17 00:00:00 2001 From: danipiza Date: Fri, 20 Feb 2026 13:11:13 +0100 Subject: [PATCH] [#24195] Handled datarace after writer shutdown Signed-off-by: danipiza --- .../src/cpp/reader/dds/SpecificQoSReader.cpp | 9 +++++++++ .../src/cpp/reader/rtps/SpecificQoSReader.cpp | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/ddspipe_participants/src/cpp/reader/dds/SpecificQoSReader.cpp b/ddspipe_participants/src/cpp/reader/dds/SpecificQoSReader.cpp index a65424902..27725e959 100644 --- a/ddspipe_participants/src/cpp/reader/dds/SpecificQoSReader.cpp +++ b/ddspipe_participants/src/cpp/reader/dds/SpecificQoSReader.cpp @@ -46,6 +46,15 @@ void SpecificQoSReader::fill_received_data_( { CommonReader::fill_received_data_(info, data_to_fill); + // During endpoint teardown, last cache changes can be processed after endpoint removal. + if (!data_to_fill.source_guid.is_valid()) + { + logDebug( + DDSPIPE_SpecificQoSReader, + "Skipping writer QoS lookup for invalid writer GUID " << data_to_fill.source_guid << "."); + return; + } + // Find qos of writer try { diff --git a/ddspipe_participants/src/cpp/reader/rtps/SpecificQoSReader.cpp b/ddspipe_participants/src/cpp/reader/rtps/SpecificQoSReader.cpp index 31b6b2da5..7a7b6c369 100644 --- a/ddspipe_participants/src/cpp/reader/rtps/SpecificQoSReader.cpp +++ b/ddspipe_participants/src/cpp/reader/rtps/SpecificQoSReader.cpp @@ -49,6 +49,15 @@ void SpecificQoSReader::fill_received_data_( { CommonReader::fill_received_data_(received_change, data_to_fill); + // During endpoint teardown, last cache changes can be processed after endpoint removal. + if (!data_to_fill.source_guid.is_valid()) + { + logDebug( + DDSPIPE_SpecificQoSReader, + "Skipping writer QoS lookup for invalid writer GUID " << data_to_fill.source_guid << "."); + return; + } + // Find qos of writer try {