From 9074c81838a539987d60719b8665ba6f953ce913 Mon Sep 17 00:00:00 2001 From: Julian Oes Date: Wed, 18 Feb 2026 12:44:13 +1300 Subject: [PATCH] px4_log: fix TSAN issue using atomic --- platforms/common/px4_log.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/platforms/common/px4_log.cpp b/platforms/common/px4_log.cpp index 73a3671c89..2760bbc7f6 100644 --- a/platforms/common/px4_log.cpp +++ b/platforms/common/px4_log.cpp @@ -50,12 +50,13 @@ #include #include #include +#include #if defined(BOARD_ENABLE_LOG_HISTORY) static LogHistory g_log_history; #endif -static orb_advert_t orb_log_message_pub = nullptr; +static px4::atomic orb_log_message_pub{nullptr}; __EXPORT const char *__px4_log_level_str[_PX4_LOG_LEVEL_PANIC + 1] = { "DEBUG", "INFO", "WARN", "ERROR", "PANIC" }; @@ -74,7 +75,7 @@ void px4_log_initialize(void) log_message.severity = 6; // info strcpy((char *)log_message.text, "initialized uORB logging"); log_message.timestamp = hrt_absolute_time(); - orb_log_message_pub = orb_advertise(ORB_ID(log_message), &log_message); + orb_log_message_pub.store(orb_advertise(ORB_ID(log_message), &log_message)); } __EXPORT void px4_log_modulename(int level, const char *module_name, const char *fmt, ...) @@ -178,7 +179,9 @@ __EXPORT void px4_log_modulename(int level, const char *module_name, const char } /* publish an orb log message */ - if (level >= _PX4_LOG_LEVEL_INFO && orb_log_message_pub) { //publish all messages + orb_advert_t orb_log_pub = orb_log_message_pub.load(); + + if (level >= _PX4_LOG_LEVEL_INFO && orb_log_pub) { //publish all messages log_message_s log_message; @@ -199,7 +202,7 @@ __EXPORT void px4_log_modulename(int level, const char *module_name, const char va_end(argptr); log_message.text[max_length - 1] = 0; //ensure 0-termination log_message.timestamp = hrt_absolute_time(); - orb_publish(ORB_ID(log_message), orb_log_message_pub, &log_message); + orb_publish(ORB_ID(log_message), orb_log_pub, &log_message); } }