summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@android.com>2010-09-10 09:19:50 -0700
committerBrad Fitzpatrick <bradfitz@android.com>2010-09-10 09:19:50 -0700
commit1e02d36b0f1dc833cf8a837c7619fbe6478694c8 (patch)
treee364db25610607edd63a0289df87ea2c7d67c1f3 /services
parent219eb7ec8403ef9b98125f2b58cc27669ae69712 (diff)
downloadframeworks_base-1e02d36b0f1dc833cf8a837c7619fbe6478694c8.zip
frameworks_base-1e02d36b0f1dc833cf8a837c7619fbe6478694c8.tar.gz
frameworks_base-1e02d36b0f1dc833cf8a837c7619fbe6478694c8.tar.bz2
Enable strictmode logging in system_server & add a lock.
We weren't logging strictmode violation in the system_server process in non-user builds (only system apps), even though the rest of the strictmode logging supports it. Also add a missing lock in ActivityManagerService. Change-Id: If2af96a7e4fdde604a647b836097f0029ef1334b
Diffstat (limited to 'services')
-rw-r--r--services/java/com/android/server/SystemServer.java11
-rw-r--r--services/java/com/android/server/am/ActivityManagerService.java20
2 files changed, 24 insertions, 7 deletions
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 4a286e7..4a9c9e9 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -517,6 +517,17 @@ class ServerThread extends Thread {
}
});
+ // For debug builds, log event loop stalls to dropbox for analysis.
+ // Similar logic also appears in ActivityThread.java for system apps.
+ if (!"user".equals(Build.TYPE)) {
+ Slog.i(TAG, "Enabling StrictMode for system server.");
+ StrictMode.setThreadPolicy(
+ StrictMode.DISALLOW_DISK_WRITE |
+ StrictMode.DISALLOW_DISK_READ |
+ StrictMode.DISALLOW_NETWORK |
+ StrictMode.PENALTY_DROPBOX);
+ }
+
Looper.loop();
Slog.d(TAG, "System ServerThread is exiting!");
}
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 483941d..2cdf31e 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -6535,13 +6535,19 @@ public final class ActivityManagerService extends ActivityManagerNative
* Utility function for addErrorToDropBox and handleStrictModeViolation's logging
* to append various headers to the dropbox log text.
*/
- private static void appendDropBoxProcessHeaders(ProcessRecord process, StringBuilder sb) {
- if (process == null || process.pid == MY_PID) {
- sb.append("Process: system_server\n");
- } else {
- sb.append("Process: ").append(process.processName).append("\n");
- }
- if (process != null) {
+ private void appendDropBoxProcessHeaders(ProcessRecord process, StringBuilder sb) {
+ // Note: ProcessRecord 'process' is guarded by the service
+ // instance. (notably process.pkgList, which could otherwise change
+ // concurrently during execution of this method)
+ synchronized (this) {
+ if (process == null || process.pid == MY_PID) {
+ sb.append("Process: system_server\n");
+ } else {
+ sb.append("Process: ").append(process.processName).append("\n");
+ }
+ if (process == null) {
+ return;
+ }
int flags = process.info.flags;
IPackageManager pm = AppGlobals.getPackageManager();
sb.append("Flags: 0x").append(Integer.toString(flags, 16)).append("\n");