ART: Fix stale reference use in debugger.

Test: run-jdwp-tests.sh --mode=host --variant=X32 --debug
Bug: 31113334
Change-Id: I48d137b0fe87b01ed982a4275d1b558fd6e23a4f
diff --git a/runtime/debugger.cc b/runtime/debugger.cc
index f2402cc..a38c9ab 100644
--- a/runtime/debugger.cc
+++ b/runtime/debugger.cc
@@ -848,20 +848,21 @@
 
 JDWP::JdwpError Dbg::GetMonitorInfo(JDWP::ObjectId object_id, JDWP::ExpandBuf* reply) {
   JDWP::JdwpError error;
-  ObjPtr<mirror::Object> o = gRegistry->Get<mirror::Object*>(object_id, &error);
+  Thread* self = Thread::Current();
+  StackHandleScope<1u> hs(self);
+  Handle<mirror::Object> o = hs.NewHandle(gRegistry->Get<mirror::Object*>(object_id, &error));
   if (o == nullptr) {
     return JDWP::ERR_INVALID_OBJECT;
   }
 
   // Ensure all threads are suspended while we read objects' lock words.
-  Thread* self = Thread::Current();
   CHECK_EQ(self->GetState(), kRunnable);
 
   MonitorInfo monitor_info;
   {
     ScopedThreadSuspension sts(self, kSuspended);
     ScopedSuspendAll ssa(__FUNCTION__);
-    monitor_info = MonitorInfo(o.Ptr());
+    monitor_info = MonitorInfo(o.Get());
   }
   if (monitor_info.owner_ != nullptr) {
     expandBufAddObjectId(reply, gRegistry->Add(monitor_info.owner_->GetPeerFromOtherThread()));