From 7e95126e8734377adad7a20673241140ba2113d9 Mon Sep 17 00:00:00 2001 From: Kodlee Yin Date: Thu, 5 Apr 2018 12:59:56 -0700 Subject: [PATCH] Include ServiceRecord in foreground service exception exception text. Test: manual verification of logcat using test service that doesn't conform to foreground service rules Bug: 77647171 Change-Id: Ie35029838359d83c31ea4e3b2faa166ac8aeec47 --- .../java/com/android/server/am/ActiveServices.java | 10 +++++++--- .../com/android/server/am/ActivityManagerService.java | 5 ++++- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index e84c5f4d9dff8..98e8df21a336a 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -2567,6 +2567,8 @@ public final class ActiveServices { Message msg = mAm.mHandler.obtainMessage( ActivityManagerService.SERVICE_FOREGROUND_CRASH_MSG); msg.obj = r.app; + msg.getData().putCharSequence( + ActivityManagerService.SERVICE_RECORD_KEY, r.toString()); mAm.mHandler.sendMessage(msg); } } @@ -3482,13 +3484,15 @@ public final class ActiveServices { if (app != null) { mAm.mAppErrors.appNotResponding(app, null, null, false, - "Context.startForegroundService() did not then call Service.startForeground()"); + "Context.startForegroundService() did not then call Service.startForeground(): " + + r); } } - void serviceForegroundCrash(ProcessRecord app) { + void serviceForegroundCrash(ProcessRecord app, CharSequence serviceRecord) { mAm.crashApplication(app.uid, app.pid, app.info.packageName, app.userId, - "Context.startForegroundService() did not then call Service.startForeground()"); + "Context.startForegroundService() did not then call Service.startForeground(): " + + serviceRecord); } void scheduleServiceTimeoutLocked(ProcessRecord proc) { diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index f756afb753775..289765b7cda82 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -1913,6 +1913,8 @@ public class ActivityManagerService extends IActivityManager.Stub static final int FIRST_COMPAT_MODE_MSG = 300; static final int FIRST_SUPERVISOR_STACK_MSG = 100; + static final String SERVICE_RECORD_KEY = "servicerecord"; + static ServiceThread sKillThread = null; static KillHandler sKillHandler = null; @@ -2161,7 +2163,8 @@ public class ActivityManagerService extends IActivityManager.Stub mServices.serviceForegroundTimeout((ServiceRecord)msg.obj); } break; case SERVICE_FOREGROUND_CRASH_MSG: { - mServices.serviceForegroundCrash((ProcessRecord)msg.obj); + mServices.serviceForegroundCrash( + (ProcessRecord) msg.obj, msg.getData().getCharSequence(SERVICE_RECORD_KEY)); } break; case DISPATCH_PENDING_INTENT_CANCEL_MSG: { RemoteCallbackList callbacks