diff options
author | Brad Fitzpatrick <bradfitz@android.com> | 2010-09-10 09:19:50 -0700 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@android.com> | 2010-09-10 09:19:50 -0700 |
commit | 1e02d36b0f1dc833cf8a837c7619fbe6478694c8 (patch) | |
tree | e364db25610607edd63a0289df87ea2c7d67c1f3 /services | |
parent | 219eb7ec8403ef9b98125f2b58cc27669ae69712 (diff) | |
download | frameworks_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.java | 11 | ||||
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 20 |
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"); |