summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andreas Gampe <agampe@google.com> 2014-09-17 03:32:20 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2014-09-17 03:32:21 +0000
commitf031724abf4f215e1627ff837f87cad5d7a25165 (patch)
treef694c441ce0748ead6ab1890e78dc853a12854c5
parenta20b7b3ecf90bb761d7085403782721f2fb474c5 (diff)
parent5cbcde2983d7cb95deb38d39784f03a7192b0061 (diff)
Merge "ART: Fix method verifier dumping"
-rw-r--r--runtime/verifier/method_verifier.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/runtime/verifier/method_verifier.cc b/runtime/verifier/method_verifier.cc
index 521a2ddc4b..f28d4883b2 100644
--- a/runtime/verifier/method_verifier.cc
+++ b/runtime/verifier/method_verifier.cc
@@ -311,9 +311,15 @@ MethodVerifier* MethodVerifier::VerifyMethodAndDump(Thread* self, std::ostream&
verifier->Verify();
verifier->DumpFailures(os);
os << verifier->info_messages_.str();
- verifier->Dump(os);
-
- return verifier;
+ // Only dump and return if no hard failures. Otherwise the verifier may be not fully initialized
+ // and querying any info is dangerous/can abort.
+ if (verifier->have_pending_hard_failure_) {
+ delete verifier;
+ return nullptr;
+ } else {
+ verifier->Dump(os);
+ return verifier;
+ }
}
MethodVerifier::MethodVerifier(Thread* self,