From b7844e5b07060bc22f9e3081a0aafd155912de5c Mon Sep 17 00:00:00 2001 From: Louis Chang Date: Wed, 23 Dec 2020 12:13:42 +0800 Subject: [PATCH] Throw exceptions if obtain ActivityStarter before system ready RWC was null while starting home activity during system boot up. Throw exceptions now if that happens again. Also add warning logs if any unknown failures during ATM#onTransact. Bug: 174713714 Bug: 173221781 Test: build and run Change-Id: I5f3414d98198144af7bc0a07c7dbfafd529790e8 --- .../com/android/server/wm/ActivityStarter.java | 3 +++ .../server/wm/ActivityTaskManagerService.java | 16 ++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java index 1b0bec5f34026..df046634da48e 100644 --- a/services/core/java/com/android/server/wm/ActivityStarter.java +++ b/services/core/java/com/android/server/wm/ActivityStarter.java @@ -279,6 +279,9 @@ class ActivityStarter { ActivityStarter starter = mStarterPool.acquire(); if (starter == null) { + if (mService.mRootWindowContainer == null) { + throw new IllegalStateException("Too early to start activity."); + } starter = new ActivityStarter(mController, mService, mSupervisor, mInterceptor); } diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index ce709783c3bd0..cc398ee24f053 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -183,6 +183,7 @@ import android.os.IUserManager; import android.os.LocaleList; import android.os.Looper; import android.os.Message; +import android.os.Parcel; import android.os.PowerManager; import android.os.PowerManagerInternal; import android.os.Process; @@ -4938,6 +4939,21 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { return allUids.contains(uid); } + @Override + public boolean onTransact(int code, Parcel data, Parcel reply, int flags) + throws RemoteException { + try { + return super.onTransact(code, data, reply, flags); + } catch (RuntimeException e) { + if (!(e instanceof SecurityException)) { + Slog.w(TAG, "Activity Task Manager onTransact aborts " + + " UID:" + Binder.getCallingUid() + + " PID:" + Binder.getCallingPid(), e); + } + throw e; + } + } + final class H extends Handler { static final int REPORT_TIME_TRACKER_MSG = 1;