Don't block while runnable in getReferent()
Change state before waiting on the GC, so that we can safely be
suspended, thus avoiding surprisingly obscure deadlocks.
Bug: 195336624
Test: Treehugger
Change-Id: I7c7dff8030be962195b7521aac320e90d81defd9
diff --git a/runtime/gc/reference_processor.cc b/runtime/gc/reference_processor.cc
index e34d140..12b1337 100644
--- a/runtime/gc/reference_processor.cc
+++ b/runtime/gc/reference_processor.cc
@@ -155,6 +155,7 @@
started_trace = true;
start_millis = MilliTime();
}
+ ScopedThreadSuspension sts(self, ThreadState::kSuspended);
condition_.WaitHoldingLocks(self);
}
if (started_trace) {