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:
@@ -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 |
|
||||
|
||||
@@ -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!");
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user