From: Elliott Hughes Date: Fri, 12 Apr 2013 18:51:51 +0000 (-0700) Subject: More native stack dump hardening. X-Git-Tag: android-x86-4.4-r1~28^2~9^2~44^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=46371593812d966c40e1ec4019e3c7c6613046a6;p=android-x86%2Fdalvik.git More native stack dump hardening. Threads just starting up or shutting down might not have any managed stack frames, leading to a NULL "currFrame" frame pointer in the interpreter stack. Bug: 8596028 Change-Id: Ie24c8d5f8e78a5abe882a9e639046c03abb91649 --- diff --git a/vm/Thread.cpp b/vm/Thread.cpp index aba98ab73..cfc43486d 100644 --- a/vm/Thread.cpp +++ b/vm/Thread.cpp @@ -3330,7 +3330,12 @@ static bool shouldShowNativeStack(Thread* thread) { // state THREAD_SUSPENDED if they're calling back into the VM, or THREAD_MONITOR // if they're blocked on a monitor, or one of the thread-startup states if // it's early enough in their life cycle (http://b/7432159). - const Method* currentMethod = SAVEAREA_FROM_FP(thread->interpSave.curFrame)->method; + u4* fp = thread->interpSave.curFrame; + if (fp == NULL) { + // The thread has no managed frames, so native frames are all there is. + return true; + } + const Method* currentMethod = SAVEAREA_FROM_FP(fp)->method; return currentMethod != NULL && dvmIsNativeMethod(currentMethod); }