Prevent memory fragmentation.
Bug: 5817320
Prevent memory fragmentation and potential allocation failures. This
change is temporary.
Change-Id: Id1e8f9606687648235ea9e18861125a8c799d812
diff --git a/vm/Android.mk b/vm/Android.mk
index 17b5a04..c23c160 100644
--- a/vm/Android.mk
+++ b/vm/Android.mk
@@ -69,6 +69,9 @@
# Enable assertions and JIT self-verification
LOCAL_CFLAGS += -UNDEBUG -DDEBUG=1 -DLOG_NDEBUG=1 -DWITH_DALVIK_ASSERT \
-DWITH_SELF_VERIFICATION $(target_smp_flag)
+
+ LOCAL_C_INCLUDES += bionic/libc/kernel/common
+
LOCAL_MODULE := libdvm_sv
include $(BUILD_SHARED_LIBRARY)
@@ -123,6 +126,8 @@
$(patsubst libffi, ,$(LOCAL_SHARED_LIBRARIES))
endif
+ LOCAL_C_INCLUDES += bionic/libc/kernel/common
+
LOCAL_CFLAGS += $(host_smp_flag)
LOCAL_MODULE_TAGS := optional
LOCAL_MODULE := libdvm
diff --git a/vm/native/dalvik_system_Zygote.cpp b/vm/native/dalvik_system_Zygote.cpp
index 31fecfd..2d66cef 100644
--- a/vm/native/dalvik_system_Zygote.cpp
+++ b/vm/native/dalvik_system_Zygote.cpp
@@ -21,6 +21,7 @@
#include "native/InternalNativePriv.h"
#include <signal.h>
+#include <linux/personality.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <grp.h>
@@ -446,6 +447,12 @@
dvmAbort();
}
+ int current = personality(0xffffFFFF);
+ int success = personality((ADDR_NO_RANDOMIZE | current));
+ if (success == -1) {
+ LOGW("Personality switch failed. current=%d error=%d\n", current, errno);
+ }
+
err = setCapabilities(permittedCapabilities, effectiveCapabilities);
if (err != 0) {
LOGE("cannot set capabilities (%llx,%llx): %s",