Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 78aae53e authored by xi yu's avatar xi yu
Browse files

[Bugfix] Add reading timeout when waiting for the reply of an application zygote.

Some defective or bad application zygote processes may do much work or just sleep in their doPreload, which makes the ActivityManager:procStart thread of system_server blocked and the other applications can not start.

Test: manual

Change-Id: I5045718719a5f876e2a03b30f104096894c4c307
parent 91a15e8a
Loading
Loading
Loading
Loading
+5 −0
Original line number Original line Diff line number Diff line
@@ -73,6 +73,8 @@ public class ZygoteProcess {


    private static final int ZYGOTE_CONNECT_TIMEOUT_MS = 20000;
    private static final int ZYGOTE_CONNECT_TIMEOUT_MS = 20000;


    private static final int APPLICATION_ZYGOTE_READ_TIMEOUT_MS = 5000;

    /**
    /**
     * Use a relatively short delay, because for app zygote, this is in the critical path of
     * Use a relatively short delay, because for app zygote, this is in the critical path of
     * service launch.
     * service launch.
@@ -1109,6 +1111,9 @@ public class ZygoteProcess {


            state.mZygoteOutputWriter.flush();
            state.mZygoteOutputWriter.flush();


            // The system_server should not be blocked by a defective or bad application zygote.
            state.mZygoteSessionSocket.setSoTimeout(APPLICATION_ZYGOTE_READ_TIMEOUT_MS);

            return (state.mZygoteInputStream.readInt() == 0);
            return (state.mZygoteInputStream.readInt() == 0);
        }
        }
    }
    }