diff options
| -rw-r--r-- | services/core/java/com/android/server/am/ActiveServices.java | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 715c9413004b..d008c5e0ccb6 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -2151,7 +2151,10 @@ public final class ActiveServices { final ServiceMap smap = getServiceMapLocked(r.userId); ServiceRecord found = smap.mServicesByName.remove(r.name); - if (found != r) { + + // Note when this method is called by bringUpServiceLocked(), the service is not found + // in mServicesByName and found will be null. + if (found != null && found != r) { // This is not actually the service we think is running... this should not happen, // but if it does, fail hard. smap.mServicesByName.put(r.name, found); |