From efb581018bbede2ecdc76bcd9722ded5b6903254 Mon Sep 17 00:00:00 2001 From: Dianne Hackborn Date: Thu, 14 Oct 2010 16:47:34 -0700 Subject: [PATCH] Debug logs for issue #3101415: Apps seem to have their UID changed over time. - Activity manager now prints the pid doing a startActivity request. - Package manager now remembers messages about problems it has parsing packages.xml. Change-Id: I11a75aa3953dbfa5dd41cfbdf69116c764ec228f --- .../android/server/PackageManagerService.java | 14 ++++--- .../com/android/server/am/ActivityStack.java | 40 ++++++++++--------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index da95b97d473ae..174b3ef87ccf3 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -8830,7 +8830,7 @@ class PackageManagerService extends IPackageManager.Stub { try { str = new FileInputStream(mBackupSettingsFilename); mReadMessages.append("Reading from backup settings file\n"); - Log.i(TAG, "Reading from backup settings file!"); + reportSettingsProblem(Log.INFO, "Need to read from backup settings file"); if (mSettingsFilename.exists()) { // If both the backup and settings file exist, we // ignore the settings since it might have been @@ -8849,7 +8849,7 @@ class PackageManagerService extends IPackageManager.Stub { if (str == null) { if (!mSettingsFilename.exists()) { mReadMessages.append("No settings file found\n"); - Slog.i(TAG, "No current settings file!"); + reportSettingsProblem(Log.INFO, "No settings file; creating initial state"); return false; } str = new FileInputStream(mSettingsFilename); @@ -8865,7 +8865,7 @@ class PackageManagerService extends IPackageManager.Stub { if (type != XmlPullParser.START_TAG) { mReadMessages.append("No start tag found in settings file\n"); - Slog.e(TAG, "No start tag found in package manager settings"); + reportSettingsProblem(Log.WARN, "No start tag found in package manager settings"); return false; } @@ -8928,10 +8928,12 @@ class PackageManagerService extends IPackageManager.Stub { } catch(XmlPullParserException e) { mReadMessages.append("Error reading: " + e.toString()); + reportSettingsProblem(Log.ERROR, "Error reading settings: " + e); Slog.e(TAG, "Error reading package manager settings", e); } catch(java.io.IOException e) { mReadMessages.append("Error reading: " + e.toString()); + reportSettingsProblem(Log.ERROR, "Error reading settings: " + e); Slog.e(TAG, "Error reading package manager settings", e); } @@ -8945,7 +8947,7 @@ class PackageManagerService extends IPackageManager.Stub { (SharedUserSetting) idObj, pp.codePath, pp.resourcePath, pp.nativeLibraryPathString, pp.versionCode, pp.pkgFlags, true, true); if (p == null) { - Slog.w(TAG, "Unable to create application package for " + reportSettingsProblem(Log.WARN, "Unable to create application package for " + pp.name); continue; } @@ -8955,13 +8957,13 @@ class PackageManagerService extends IPackageManager.Stub { + " has shared uid " + pp.sharedId + " that is not a shared uid\n"; mReadMessages.append(msg); - Slog.e(TAG, msg); + reportSettingsProblem(Log.ERROR, msg); } else { String msg = "Bad package setting: package " + pp.name + " has shared uid " + pp.sharedId + " that is not defined\n"; mReadMessages.append(msg); - Slog.e(TAG, msg); + reportSettingsProblem(Log.ERROR, msg); } } mPendingPackages.clear(); diff --git a/services/java/com/android/server/am/ActivityStack.java b/services/java/com/android/server/am/ActivityStack.java index 86c7bdf9189c0..f52d3228649da 100644 --- a/services/java/com/android/server/am/ActivityStack.java +++ b/services/java/com/android/server/am/ActivityStack.java @@ -1881,7 +1881,27 @@ public class ActivityStack { String resultWho, int requestCode, int callingPid, int callingUid, boolean onlyIfNeeded, boolean componentSpecified) { - Slog.i(TAG, "Starting: " + intent); + + int err = START_SUCCESS; + + ProcessRecord callerApp = null; + if (caller != null) { + callerApp = mService.getRecordForAppLocked(caller); + if (callerApp != null) { + callingPid = callerApp.pid; + callingUid = callerApp.info.uid; + } else { + Slog.w(TAG, "Unable to find app for caller " + caller + + " (pid=" + callingPid + ") when starting: " + + intent.toString()); + err = START_PERMISSION_DENIED; + } + } + + if (err == START_SUCCESS) { + Slog.i(TAG, "Starting: " + intent + " from pid " + + (callerApp != null ? callerApp.pid : callingPid)); + } ActivityRecord sourceRecord = null; ActivityRecord resultRecord = null; @@ -1916,9 +1936,7 @@ public class ActivityStack { } } - int err = START_SUCCESS; - - if (intent.getComponent() == null) { + if (err == START_SUCCESS && intent.getComponent() == null) { // We couldn't find a class that can handle the given Intent. // That's the end of that! err = START_INTENT_NOT_RESOLVED; @@ -1930,20 +1948,6 @@ public class ActivityStack { err = START_CLASS_NOT_FOUND; } - ProcessRecord callerApp = null; - if (err == START_SUCCESS && caller != null) { - callerApp = mService.getRecordForAppLocked(caller); - if (callerApp != null) { - callingPid = callerApp.pid; - callingUid = callerApp.info.uid; - } else { - Slog.w(TAG, "Unable to find app for caller " + caller - + " (pid=" + callingPid + ") when starting: " - + intent.toString()); - err = START_PERMISSION_DENIED; - } - } - if (err != START_SUCCESS) { if (resultRecord != null) { sendActivityResultLocked(-1,