am b724d251: Merge "Enable strictmode logging in system_server & add a lock." into gingerbread

Merge commit 'b724d2519a900744a477bd57df6a2f8703c87e72' into gingerbread-plus-aosp

* commit 'b724d2519a900744a477bd57df6a2f8703c87e72':
  Enable strictmode logging in system_server & add a lock.
This commit is contained in:
Brad Fitzpatrick
2010-09-10 14:08:58 -07:00
committed by Android Git Automerger
3 changed files with 26 additions and 7 deletions

View File

@@ -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 |

View File

@@ -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!");
}

View File

@@ -6559,13 +6559,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");