From 469d0808f5fee70cb9854dded0a1c7f343337669 Mon Sep 17 00:00:00 2001 From: Megvii Engine Team Date: Wed, 16 Dec 2020 17:09:59 +0800 Subject: [PATCH] fix(asan/thread): fix asan issue GitOrigin-RevId: 8e2b093fb1f696cc78091c28817fbada1feaa9d8 --- src/core/impl/utils/thread.cpp | 6 ++++++ src/core/include/megbrain/utils/thread_impl_spinlock.h | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/core/impl/utils/thread.cpp b/src/core/impl/utils/thread.cpp index b8104983..f6f72c24 100644 --- a/src/core/impl/utils/thread.cpp +++ b/src/core/impl/utils/thread.cpp @@ -18,6 +18,12 @@ using namespace mgb; #if MGB_THREAD_SAFE const std::thread::id RecursiveSpinlock::sm_none_owner = std::thread::id(); +//! why not use initializer_list for global var, detail: +//! MGE-1738 +RecursiveSpinlock::RecursiveSpinlock() { + m_owner = sm_none_owner; +} + void RecursiveSpinlock::lock() { auto tid = std::this_thread::get_id(); if (m_owner.load(std::memory_order_relaxed) != tid) { diff --git a/src/core/include/megbrain/utils/thread_impl_spinlock.h b/src/core/include/megbrain/utils/thread_impl_spinlock.h index 9cbafc27..b9f1efc4 100644 --- a/src/core/include/megbrain/utils/thread_impl_spinlock.h +++ b/src/core/include/megbrain/utils/thread_impl_spinlock.h @@ -33,15 +33,15 @@ class Spinlock final: public NonCopyableObj { }; //! recursive spinlock -class RecursiveSpinlock final: public NonCopyableObj { +class RecursiveSpinlock final : public NonCopyableObj { static const std::thread::id sm_none_owner; - std::atomic m_owner{sm_none_owner}; + std::atomic m_owner; size_t m_recur_count = 0; - public: - - void lock(); - void unlock(); +public: + RecursiveSpinlock(); + void lock(); + void unlock(); }; } // namespace mgb