diff options
author | Brad Fitzpatrick <bradfitz@android.com> | 2010-09-10 14:05:57 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-09-10 14:05:57 -0700 |
commit | b724d2519a900744a477bd57df6a2f8703c87e72 (patch) | |
tree | b46b6a9aff423f8be01f233b1cdd43a616e6119b | |
parent | 863330154e8d42e688ffda02c497f53d8b213a2d (diff) | |
parent | 1e02d36b0f1dc833cf8a837c7619fbe6478694c8 (diff) | |
download | frameworks_base-b724d2519a900744a477bd57df6a2f8703c87e72.zip frameworks_base-b724d2519a900744a477bd57df6a2f8703c87e72.tar.gz frameworks_base-b724d2519a900744a477bd57df6a2f8703c87e72.tar.bz2 |
Merge "Enable strictmode logging in system_server & add a lock." into gingerbread
-rw-r--r-- | core/java/android/app/ActivityThread.java | 2 | ||||
-rw-r--r-- | services/java/com/android/server/SystemServer.java | 11 | ||||
-rw-r--r-- | services/java/com/android/server/am/ActivityManagerService.java | 20 |
3 files changed, 26 insertions, 7 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 373142d..f8407c2 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -3107,6 +3107,8 @@ public final class ActivityThread { /** * For system applications on userdebug/eng builds, log stack * traces of disk and network access to dropbox for analysis. + * + * Similar logic exists in SystemServer.java. */ if ((data.appInfo.flags & (ApplicationInfo.FLAG_SYSTEM | 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"); |