diff --git a/base/allocator/partition_allocator/partition_lock.h b/base/allocator/partition_allocator/partition_lock.h index 47ccb42ea6053b243bd527c8d8d8625dcec189af..3d14fcb7dc740bccd0451414ce63ad5c19317b79 100644 --- a/base/allocator/partition_allocator/partition_lock.h +++ b/base/allocator/partition_allocator/partition_lock.h @@ -17,11 +17,13 @@ #include "base/allocator/partition_allocator/pkey.h" #include "base/allocator/partition_allocator/spinning_mutex.h" #include "build/build_config.h" +#include "base/logging.h" namespace partition_alloc::internal { class PA_LOCKABLE Lock { public: + bool is_locked_ = false; inline constexpr Lock(); void Acquire() PA_EXCLUSIVE_LOCK_FUNCTION() { #if BUILDFLAG(PA_DCHECK_IS_ON) @@ -56,7 +58,11 @@ class PA_LOCKABLE Lock { // issue. PA_IMMEDIATE_CRASH(); } + if (is_locked_) { + LOG(ERROR) << "partition_alloc::internal::Lock::Acquire already locked!!!"; + } lock_.Acquire(); + is_locked_ = true; } owning_thread_ref_.store(current_thread, std::memory_order_release); #else @@ -70,6 +76,7 @@ class PA_LOCKABLE Lock { std::memory_order_release); #endif lock_.Release(); + is_locked_ = false; } void AssertAcquired() const PA_ASSERT_EXCLUSIVE_LOCK() { lock_.AssertAcquired();