Merge "Revert "Remove an unnecessary finger check when re-marking roots."" into dalvik-dev
diff --git a/vm/alloc/HeapBitmap.h b/vm/alloc/HeapBitmap.h
index b0dea99..8474963 100644
--- a/vm/alloc/HeapBitmap.h
+++ b/vm/alloc/HeapBitmap.h
@@ -146,8 +146,8 @@
                 word &= ~(highBit >> shift);
                 void *addr = (void *)(ptrBase + shift * HB_OBJECT_ALIGNMENT);
                 (*callback)(addr, arg);
-                end = HB_OFFSET_TO_INDEX(bitmap->max - bitmap->base);
             }
+            end = HB_OFFSET_TO_INDEX(bitmap->max - bitmap->base);
         }
     }
 }
diff --git a/vm/native/dalvik_system_Zygote.c b/vm/native/dalvik_system_Zygote.c
index 8b09b96..c762f51 100644
--- a/vm/native/dalvik_system_Zygote.c
+++ b/vm/native/dalvik_system_Zygote.c
@@ -366,7 +366,8 @@
             err = prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0);
 
             if (err < 0) {
-                LOGW("cannot PR_SET_KEEPCAPS: %s", strerror(errno));
+                LOGE("cannot PR_SET_KEEPCAPS: %s", strerror(errno));
+                dvmAbort();
             }
         }
 
@@ -375,23 +376,27 @@
         err = setgroupsIntarray(gids);
 
         if (err < 0) {
-            LOGW("cannot setgroups(): %s", strerror(errno));
+            LOGE("cannot setgroups(): %s", strerror(errno));
+            dvmAbort();
         }
 
         err = setrlimitsFromArray(rlimits);
 
         if (err < 0) {
-            LOGW("cannot setrlimit(): %s", strerror(errno));
+            LOGE("cannot setrlimit(): %s", strerror(errno));
+            dvmAbort();
         }
 
         err = setgid(gid);
         if (err < 0) {
-            LOGW("cannot setgid(%d): %s", gid, strerror(errno));
+            LOGE("cannot setgid(%d): %s", gid, strerror(errno));
+            dvmAbort();
         }
 
         err = setuid(uid);
         if (err < 0) {
-            LOGW("cannot setuid(%d): %s", uid, strerror(errno));
+            LOGE("cannot setuid(%d): %s", uid, strerror(errno));
+            dvmAbort();
         }
 
         /*