Fix check failure in ConcurrentCopying::IssueEmptyCheckpoint().

Thread::DumpState() internally uses ScopedObjectAccess which expects
that the caller does not hold the mutator lock if its in a suspended
state or that the caller holds the mutator lock and in the runnable
state. Use ScopedObjectAccess instead on the caller side to match this
expectation.

Bug: 34321097
Bug: 33006388
Bug: 12687968
Test: test-art-host with CC.
Change-Id: I04698d21fb4820a938009c7caeb8e81721329007
diff --git a/runtime/gc/collector/concurrent_copying.cc b/runtime/gc/collector/concurrent_copying.cc
index 7b86339..6044053 100644
--- a/runtime/gc/collector/concurrent_copying.cc
+++ b/runtime/gc/collector/concurrent_copying.cc
@@ -846,7 +846,7 @@
         // Some threads in 'runnable_thread_ids' are probably stuck. Try to dump their stacks.
         // Avoid using ThreadList::Dump() initially because it is likely to get stuck as well.
         {
-          ReaderMutexLock mu0(self, *Locks::mutator_lock_);
+          ScopedObjectAccess soa(self);
           MutexLock mu1(self, *Locks::thread_list_lock_);
           for (Thread* thread : thread_list->GetList()) {
             uint32_t tid = thread->GetThreadId();