diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc index f610d15b5a46..e6c5a0bf514a 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cc @@ -457,10 +457,7 @@ void BlockingMutex::Lock() { void BlockingMutex::Unlock() { atomic_uint32_t *m = reinterpret_cast(&opaque_storage_); u32 v = atomic_exchange(m, MtxUnlocked, memory_order_relaxed); - if (v == MtxUnlocked) { - Printf("FATAL: unlock of unlocked mutex\n"); - Die(); - } + CHECK_NE(v, MtxUnlocked); if (v == MtxSleeping) syscall(__NR_futex, m, FUTEX_WAKE_PRIVATE, 1, 0, 0, 0); } diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc b/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc index 52e184863cce..c4b8e4c2bcf2 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc +++ b/compiler-rt/lib/sanitizer_common/sanitizer_mac.cc @@ -30,6 +30,7 @@ #include #include #include +#include namespace __sanitizer { diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_mutex.h b/compiler-rt/lib/sanitizer_common/sanitizer_mutex.h index 15e1caa1b277..56438fce471c 100644 --- a/compiler-rt/lib/sanitizer_common/sanitizer_mutex.h +++ b/compiler-rt/lib/sanitizer_common/sanitizer_mutex.h @@ -74,6 +74,7 @@ class BlockingMutex { void Unlock(); private: uptr opaque_storage_[10]; + uptr owner_; // for debugging }; template