From acd20ca4edcae752e3e555517fa6f8378177262c Mon Sep 17 00:00:00 2001 From: Hiroshi Yamauchi Date: Tue, 8 Sep 2015 17:50:48 -0700 Subject: Allow null current thread in jni weak ref decode during shutdown. Fix a crash during a runtime shutdown for the read barrier config. Bug: 23897251 Bug: 12687968 Change-Id: Iea0888cb6d052d4becddba289dc0ed121461e97d --- runtime/java_vm_ext.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'runtime/java_vm_ext.cc') diff --git a/runtime/java_vm_ext.cc b/runtime/java_vm_ext.cc index 92eef3983b..63e8887ff3 100644 --- a/runtime/java_vm_ext.cc +++ b/runtime/java_vm_ext.cc @@ -580,9 +580,12 @@ inline bool JavaVMExt::MayAccessWeakGlobals(Thread* self) const { } inline bool JavaVMExt::MayAccessWeakGlobalsUnlocked(Thread* self) const { - return kUseReadBarrier - ? self->GetWeakRefAccessEnabled() - : allow_accessing_weak_globals_.LoadSequentiallyConsistent(); + if (kUseReadBarrier) { + // self can be null during a runtime shutdown. ~Runtime()->~ClassLinker()->DecodeWeakGlobal(). + return self != nullptr ? self->GetWeakRefAccessEnabled() : true; + } else { + return allow_accessing_weak_globals_.LoadSequentiallyConsistent(); + } } mirror::Object* JavaVMExt::DecodeWeakGlobal(Thread* self, IndirectRef ref) { -- cgit v1.2.3-59-g8ed1b