| Index: content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
|
| diff --git a/content/public/android/java/src/org/chromium/content/app/ChildProcessService.java b/content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
|
| index 1e175a753a0ec9215f1719b9bf5a899fb44b5b20..46c1bf16edc862bf55a4546028f7ef697555d273 100644
|
| --- a/content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
|
| +++ b/content/public/android/java/src/org/chromium/content/app/ChildProcessService.java
|
| @@ -130,6 +130,14 @@ public class ChildProcessService extends Service {
|
| @Override
|
| public void run() {
|
| try {
|
| + // CommandLine must be initialized before others, e.g., Linker.isUsed()
|
| + // may check the command line options.
|
| + synchronized (mMainThread) {
|
| + while (mCommandLineParams == null) {
|
| + mMainThread.wait();
|
| + }
|
| + }
|
| + CommandLine.init(mCommandLineParams);
|
| boolean useLinker = Linker.isUsed();
|
| boolean requestedSharedRelro = false;
|
| if (useLinker) {
|
| @@ -138,23 +146,16 @@ public class ChildProcessService extends Service {
|
| mMainThread.wait();
|
| }
|
| }
|
| - if (mLinkerParams != null) {
|
| - if (mLinkerParams.mWaitForSharedRelro) {
|
| - requestedSharedRelro = true;
|
| - Linker.initServiceProcess(mLinkerParams.mBaseLoadAddress);
|
| - } else {
|
| - Linker.disableSharedRelros();
|
| - }
|
| - Linker.setTestRunnerClassName(mLinkerParams.mTestRunnerClassName);
|
| + assert mLinkerParams != null;
|
| + if (mLinkerParams.mWaitForSharedRelro) {
|
| + requestedSharedRelro = true;
|
| + Linker.initServiceProcess(mLinkerParams.mBaseLoadAddress);
|
| + } else {
|
| + Linker.disableSharedRelros();
|
| }
|
| + Linker.setTestRunnerClassName(mLinkerParams.mTestRunnerClassName);
|
| }
|
| boolean isLoaded = false;
|
| - synchronized (mMainThread) {
|
| - while (mCommandLineParams == null) {
|
| - mMainThread.wait();
|
| - }
|
| - }
|
| - CommandLine.init(mCommandLineParams);
|
| if (CommandLine.getInstance().hasSwitch(
|
| BaseSwitches.RENDERER_WAIT_FOR_JAVA_DEBUGGER)) {
|
| android.os.Debug.waitForDebugger();
|
| @@ -254,9 +255,9 @@ public class ChildProcessService extends Service {
|
| synchronized (mMainThread) {
|
| mCommandLineParams = intent.getStringArrayExtra(
|
| ChildProcessConnection.EXTRA_COMMAND_LINE);
|
| - mLinkerParams = null;
|
| - if (Linker.isUsed())
|
| - mLinkerParams = new ChromiumLinkerParams(intent);
|
| + // mLinkerParams is never used if Linker.isUsed() returns false.
|
| + // See onCreate().
|
| + mLinkerParams = new ChromiumLinkerParams(intent);
|
| mIsBound = true;
|
| mMainThread.notifyAll();
|
| }
|
|
|