summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/base/mutex.cc1
-rw-r--r--runtime/base/mutex.h2
2 files changed, 2 insertions, 1 deletions
diff --git a/runtime/base/mutex.cc b/runtime/base/mutex.cc
index 0abe9667f8..26a665bd41 100644
--- a/runtime/base/mutex.cc
+++ b/runtime/base/mutex.cc
@@ -463,6 +463,7 @@ void Mutex::ExclusiveLock(Thread* self) {
done = state_and_contenders_.CompareAndSetWeakAcquire(cur_state, cur_state | kHeldMask);
} else {
// Failed to acquire, hang up.
+ // We don't hold the mutex: GetExclusiveOwnerTid() is usually, but not always, correct.
ScopedContentionRecorder scr(this, SafeGetTid(self), GetExclusiveOwnerTid());
// Empirically, it appears important to spin again each time through the loop; if we
// bother to go to sleep and wake up, we should be fairly persistent in trying for the
diff --git a/runtime/base/mutex.h b/runtime/base/mutex.h
index e3d89e7449..9185f79ab7 100644
--- a/runtime/base/mutex.h
+++ b/runtime/base/mutex.h
@@ -394,7 +394,7 @@ class EXPORT SHARED_LOCKABLE ReaderWriterMutex : public BaseMutex {
// Id associated with exclusive owner. No memory ordering semantics if called from a thread other
// than the owner. Returns 0 if the lock is not held. Returns either 0 or -1 if it is held by
- // one or more readers.
+ // one or more readers. Not reliable unless the mutex is held.
pid_t GetExclusiveOwnerTid() const;
void Dump(std::ostream& os) const override;