From 3c2f1806007de662ebbcb16f99a2e0a5fbeaec4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Barnab=C3=A1s=20P=C5=91cze?= Date: Tue, 11 Nov 2025 09:34:47 +0100 Subject: [PATCH] libcamera: base: thread: Use `pthread_self()` when setting name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There is a data race between `Thread::start()` writing `Thread::thread_` and `Thread::startThread()` reading it. Avoid it by using `pthread_self()` to get the id of the current thread instead of using the `thread_` member. This is at least the second time this issue occurs: https://lists.libcamera.org/pipermail/libcamera-devel/2025-January/047954.html Fixes: 559128b1f1b3cf ("Thread: Add name parameter") Signed-off-by: Barnabás Pőcze Reviewed-by: Daniel Scally Reviewed-by: Laurent Pinchart --- src/libcamera/base/thread.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/libcamera/base/thread.cpp b/src/libcamera/base/thread.cpp index 39209ec8..b94a3d74 100644 --- a/src/libcamera/base/thread.cpp +++ b/src/libcamera/base/thread.cpp @@ -292,8 +292,7 @@ void Thread::startThread() currentThreadData = data_.get(); if (!name_.empty()) - pthread_setname_np(thread_.native_handle(), - name_.substr(0, 15).c_str()); + pthread_setname_np(pthread_self(), name_.substr(0, 15).c_str()); run(); }