Prevents deadlock if marking verifier roots fails when we attempt to
dump the stack traces. The deadlock occurs from FindLocksAtDexPC
since this allocates a new verifier then adds / removes it from the
method_verifiers_ array.
Bug:
18651054
Change-Id: Ia9b9470ce5e4ac20bfbb39bef0283974cf487765
void Runtime::AddMethodVerifier(verifier::MethodVerifier* verifier) {
DCHECK(verifier != nullptr);
+ if (gAborting) {
+ return;
+ }
MutexLock mu(Thread::Current(), method_verifier_lock_);
method_verifiers_.insert(verifier);
}
void Runtime::RemoveMethodVerifier(verifier::MethodVerifier* verifier) {
DCHECK(verifier != nullptr);
+ if (gAborting) {
+ return;
+ }
MutexLock mu(Thread::Current(), method_verifier_lock_);
auto it = method_verifiers_.find(verifier);
CHECK(it != method_verifiers_.end());