| Index: content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java b/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
|
| index 4d58ca080f326b1454371c44c01de56e6ad3d701..b0c8feb632e44786a1098e44d795e48fd06b80be 100644
|
| --- a/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
|
| +++ b/content/public/android/java/src/org/chromium/content/browser/ChildProcessLauncher.java
|
| @@ -34,6 +34,7 @@ import org.chromium.content.common.SurfaceWrapper;
|
|
|
| import java.io.IOException;
|
| import java.util.ArrayList;
|
| +import java.util.Collections;
|
| import java.util.LinkedList;
|
| import java.util.Map;
|
| import java.util.Queue;
|
| @@ -73,6 +74,12 @@ public class ChildProcessLauncher {
|
| for (int i = 0; i < numChildServices; i++) {
|
| mFreeConnectionIndices.add(i);
|
| }
|
| + // Randomize the order of named child services to workaround this bug:
|
| + // Android restarts crashed services with the previous intent. If browser crashes and
|
| + // is restarted at the same time, then it's possible to bind to the restarted service
|
| + // with stale intent and bundle data. See crbug.com/664341#c84 for an example.
|
| + // Randomizing the start up order is a pure workaround to make this case less likely.
|
| + Collections.shuffle(mFreeConnectionIndices);
|
| mChildClassName = serviceClassName;
|
| mInSandbox = inSandbox;
|
| }
|
|
|