OSDN Git Service

Attempt to fix dalvik heap corruption.
authorJesse Wilson <jessewilson@google.com>
Tue, 6 Sep 2011 16:55:25 +0000 (12:55 -0400)
committerJesse Wilson <jessewilson@google.com>
Tue, 6 Sep 2011 16:55:50 +0000 (12:55 -0400)
This is bccheng's find, as reported here:
http://b/5208786#ISSUE_HistoryHeader49

Bug: http://b/5208786
Change-Id: I1616bac1ef6c197f723656187a784fc6838975d4

vm/interp/Interp.cpp

index 02a33d7..85d06db 100644 (file)
@@ -1732,7 +1732,7 @@ void dvmCheckBefore(const u2 *pc, u4 *fp, Thread* self)
         // Are we are a safe point?
         int flags;
         flags = dexGetFlagsFromOpcode(dexOpcodeFromCodeUnit(*pc));
-        if (flags & VERIFY_GC_INST_MASK) {
+        if (flags & (VERIFY_GC_INST_MASK & ~kInstrCanThrow)) {
             // Yes, at a safe point.  Pending callback?
             if (self->interpBreak.ctl.subMode & kSubModeCallbackPending) {
                 SafePointCallback callback;