summaryrefslogtreecommitdiff
path: root/services/java/com/android/server/content/ContentService.java
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2013-10-01 19:10:13 -0700
committerDianne Hackborn <hackbod@google.com>2013-10-01 20:51:12 -0700
commit164371fb759bad6854570af0fca60d9a01e17235 (patch)
tree7c4cb9b6a8cdbc6d9c4ed0d333c4d9871441dd1f /services/java/com/android/server/content/ContentService.java
parentcbf3f2cde569aac3a49d888d2bd52d77dc139738 (diff)
Fix issue #11005453: [SUW] G+ profile creation for new user broken
The main problem here was a mistake when turning a single process structure to a multi-package-process structure with a common process. When we cloned the original process state, if there were any services already created for the process for that package, they would be left with their process pointer still referencing the original now common process instead of the package-specific process, allowing the active counts to get bad. Now we switch any of those processes over to the new package-specific process. There was also another smaller issue with how ServiceRecord is associated with a ServiceState -- we could be waiting for an old ServiceRecord to be destroyed while at the same time creating a new ServiceRecord for that same service class. These would share the same ServiceState, so when the old record finally finished destroying itself it would trample over whatever the new service is doing. This is fixed by changing the model to instead of using an "active" reference count, we have an object identifying the current owner of the ServiceState. Then when the old ServiceRecord is cleaning up, we know if it is still the owner at that point. Also some other small things along the way -- new Log.wtfStack() method that is convenient, new suite of Slog.wtf methods, fixed some services to use Slog.wtf when catching exceptions being returned to the caller so that we actually know about them. Change-Id: I75674ce38050b6423fd3c6f43d1be172b470741f
Diffstat (limited to 'services/java/com/android/server/content/ContentService.java')
-rw-r--r--services/java/com/android/server/content/ContentService.java2
1 files changed, 1 insertions, 1 deletions
diff --git a/services/java/com/android/server/content/ContentService.java b/services/java/com/android/server/content/ContentService.java
index 7c82821bce52..885ec9f1b8a1 100644
--- a/services/java/com/android/server/content/ContentService.java
+++ b/services/java/com/android/server/content/ContentService.java
@@ -141,7 +141,7 @@ public final class ContentService extends IContentService.Stub {
// The content service only throws security exceptions, so let's
// log all others.
if (!(e instanceof SecurityException)) {
- Log.e(TAG, "Content Service Crash", e);
+ Slog.wtf(TAG, "Content Service Crash", e);
}
throw e;
}