From 2d84a406bfc69eaad952078b01c3d5c76a489b41 Mon Sep 17 00:00:00 2001 From: Narayan Kamath Date: Fri, 11 Apr 2014 18:44:31 +0100 Subject: Workaround 64 bit devices that don't have zygotes yet. This can be fixed by tweaking their BoardConfig as well, but that leads to all sorts of other problems. For now, fall back to the primary zygote if the secondary is unavailable. This will fail if shared libraries for the primary zygote ABI are unavailable, but that won't be the case just yet. bug: 13970103 Change-Id: Ifa107e43ca95023d57a0d9c641e4fddaccd9a888 --- core/java/android/os/Process.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'core') diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java index 10ff27e..96f42cc 100644 --- a/core/java/android/os/Process.java +++ b/core/java/android/os/Process.java @@ -372,7 +372,7 @@ public class Process { for (int i = 0; i < tries; i++) { if (i > 0) { try { - Log.i("Zygote", "Zygote not up yet, sleeping..."); + Log.i(LOG_TAG, "Zygote not up yet, sleeping..."); Thread.sleep(ZYGOTE_RETRY_MILLIS); } catch (InterruptedException ex) { throw new ZygoteStartFailedEx(ex); @@ -707,6 +707,16 @@ public class Process { return primaryZygoteState; } + // TODO: Get rid of this. This is a temporary workaround until all the + // compilation related pieces for the dual zygote stack are ready. + // b/3647418. + if (System.getenv("ANDROID_SOCKET_" + SECONDARY_ZYGOTE_SOCKET) == null) { + Log.e(LOG_TAG, "Forcing app to primary zygote, secondary unavailable (ABI= " + abi + ")"); + // Should be : + // throw new ZygoteStartFailedEx("Unsupported zygote ABI: " + abi); + return primaryZygoteState; + } + // The primary zygote didn't match. Try the secondary. if (secondaryZygoteState == null || secondaryZygoteState.isClosed()) { secondaryZygoteState = ZygoteState.connect(SECONDARY_ZYGOTE_SOCKET, -- cgit v1.1