Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f996b766 authored by Todd Kennedy's avatar Todd Kennedy
Browse files

Add debug logs

Logs are temporary and only used to try to catch problems with
the recent package manager refactoring. They will be reverted.

This reverts commit cdc2e673.
Bug: 63539144
Test: Manual. Builds, runs and shows debug output

Change-Id: I987e35a86253de04f809797d835bbf6a01dd8d03
parent 2e4a4af7
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -6285,6 +6285,31 @@ public class PackageParser {
                + " " + packageName + "}";
        }

        public String dumpState_temp() {
            String flags = "";
            flags += ((applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0 ? "U" : "");
            flags += ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0 ? "S" : "");
            if ("".equals(flags)) {
                flags = "-";
            }
            String privFlags = "";
            privFlags += ((applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0 ? "P" : "");
            privFlags += ((applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0 ? "O" : "");
            privFlags += ((applicationInfo.privateFlags & ApplicationInfo.PRIVATE_FLAG_VENDOR) != 0 ? "V" : "");
            if ("".equals(privFlags)) {
                privFlags = "-";
            }
            return "Package{"
            + Integer.toHexString(System.identityHashCode(this))
            + " " + packageName
            + ", ver:" + getLongVersionCode()
            + ", path: " + codePath
            + ", flags: " + flags
            + ", privFlags: " + privFlags
            + ", extra: " + (mExtras == null ? "<<NULL>>" : Integer.toHexString(System.identityHashCode(mExtras)) + "}")
            + "}";
        }

        @Override
        public int describeContents() {
            return 0;
+112 −0
Original line number Diff line number Diff line
@@ -2697,6 +2697,12 @@ public class PackageManagerService extends IPackageManager.Stub
                                mSettings.getDisabledSystemPkgLPr(ps.name);
                        if (disabledPs.codePath == null || !disabledPs.codePath.exists()
                                || disabledPs.pkg == null) {
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Possibly deleted app: " + ps.dumpState_temp()
        + "; path: " + (disabledPs.codePath == null ? "<<NULL>>":disabledPs.codePath)
        + "; pkg: " + (disabledPs.pkg==null?"<<NULL>>":disabledPs.pkg.toString()));
}
                            possiblyDeletedUpdatedSystemApps.add(ps.name);
                        }
                    }
@@ -2748,6 +2754,10 @@ public class PackageManagerService extends IPackageManager.Stub
                for (String deletedAppName : possiblyDeletedUpdatedSystemApps) {
                    PackageParser.Package deletedPkg = mPackages.get(deletedAppName);
                    mSettings.removeDisabledSystemPackageLPw(deletedAppName);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "remove update; name: " + deletedAppName + ", exists? " + (deletedPkg != null));
}
                    final String msg;
                    if (deletedPkg == null) {
                        // should have found an update, but, we didn't; remove everything
@@ -8311,6 +8321,8 @@ public class PackageManagerService extends IPackageManager.Stub
        return scannedPkg;
    }
    // Temporary to catch potential issues with refactoring
    private static boolean REFACTOR_DEBUG = true;
    /**
     * Adds a new package to the internal data structures during platform initialization.
     * <p>After adding, the package is known to the system and available for querying.
@@ -8351,6 +8363,10 @@ public class PackageManagerService extends IPackageManager.Stub
        synchronized (mPackages) {
            renamedPkgName = mSettings.getRenamedPackageLPr(pkg.mRealPackage);
            final String realPkgName = getRealPackageName(pkg, renamedPkgName);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Add pkg: " + pkg.packageName + (realPkgName==null?"":", realName: " + realPkgName));
}
            if (realPkgName != null) {
                ensurePackageRenamed(pkg, renamedPkgName);
            }
@@ -8365,6 +8381,12 @@ public class PackageManagerService extends IPackageManager.Stub
            if (DEBUG_INSTALL && isSystemPkgUpdated) {
                Slog.d(TAG, "updatedPkg = " + disabledPkgSetting);
            }
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "SSP? " + scanSystemPartition
        + ", exists? " + pkgAlreadyExists + (pkgAlreadyExists?" "+pkgSetting.toString():"")
        + ", upgraded? " + isSystemPkgUpdated + (isSystemPkgUpdated?" "+disabledPkgSetting.toString():""));
}
            final SharedUserSetting sharedUserSetting = (pkg.mSharedUserId != null)
                    ? mSettings.getSharedUserLPw(pkg.mSharedUserId,
@@ -8376,6 +8398,12 @@ public class PackageManagerService extends IPackageManager.Stub
                Log.d(TAG, "Shared UserID " + pkg.mSharedUserId
                        + " (uid=" + sharedUserSetting.userId + "):"
                        + " packages=" + sharedUserSetting.packages);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Shared UserID " + pkg.mSharedUserId
        + " (uid=" + sharedUserSetting.userId + "):"
        + " packages=" + sharedUserSetting.packages);
}
            }
            if (scanSystemPartition) {
@@ -8384,6 +8412,10 @@ public class PackageManagerService extends IPackageManager.Stub
                // version on /data, cycle through all of its children packages and
                // remove children that are no longer defined.
                if (isSystemPkgUpdated) {
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Disable child packages");
}
                    final int scannedChildCount = (pkg.childPackages != null)
                            ? pkg.childPackages.size() : 0;
                    final int disabledChildCount = disabledPkgSetting.childPackageNames != null
@@ -8395,11 +8427,19 @@ public class PackageManagerService extends IPackageManager.Stub
                        for (int j = 0; j < scannedChildCount; j++) {
                            PackageParser.Package childPkg = pkg.childPackages.get(j);
                            if (childPkg.packageName.equals(disabledChildPackageName)) {
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Ignore " + disabledChildPackageName);
}
                                disabledPackageAvailable = true;
                                break;
                            }
                        }
                        if (!disabledPackageAvailable) {
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Disable " + disabledChildPackageName);
}
                            mSettings.removeDisabledSystemPackageLPw(disabledChildPackageName);
                        }
                    }
@@ -8408,17 +8448,44 @@ public class PackageManagerService extends IPackageManager.Stub
                            disabledPkgSetting /* pkgSetting */, null /* disabledPkgSetting */,
                            null /* originalPkgSetting */, null, parseFlags, scanFlags,
                            (pkg == mPlatformPackage), user);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Scan disabled system package");
Slog.e("TODD",
        "Pre: " + request.pkgSetting.dumpState_temp());
}
final ScanResult result =
                    scanPackageOnlyLI(request, mFactoryTest, -1L);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Post: " + (result.success?result.pkgSetting.dumpState_temp():"FAILED scan"));
}
                }
            }
        }
        final boolean newPkgChangedPaths =
                pkgAlreadyExists && !pkgSetting.codePathString.equals(pkg.codePath);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "paths changed? " + newPkgChangedPaths
        + "; old: " + pkg.codePath
        + ", new: " + (pkgSetting==null?"<<NULL>>":pkgSetting.codePathString));
}
        final boolean newPkgVersionGreater =
                pkgAlreadyExists && pkg.getLongVersionCode() > pkgSetting.versionCode;
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "version greater? " + newPkgVersionGreater
        + "; old: " + pkg.getLongVersionCode()
        + ", new: " + (pkgSetting==null?"<<NULL>>":pkgSetting.versionCode));
}
        final boolean isSystemPkgBetter = scanSystemPartition && isSystemPkgUpdated
                && newPkgChangedPaths && newPkgVersionGreater;
if (REFACTOR_DEBUG) {
    Slog.e("TODD",
            "system better? " + isSystemPkgBetter);
}
        if (isSystemPkgBetter) {
            // The version of the application on /system is greater than the version on
            // /data. Switch back to the application on /system.
@@ -8434,6 +8501,13 @@ public class PackageManagerService extends IPackageManager.Stub
                    + " name: " + pkgSetting.name
                    + "; " + pkgSetting.versionCode + " --> " + pkg.getLongVersionCode()
                    + "; " + pkgSetting.codePathString + " --> " + pkg.codePath);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "System package changed;"
        + " name: " + pkgSetting.name
        + "; " + pkgSetting.versionCode + " --> " + pkg.getLongVersionCode()
        + "; " + pkgSetting.codePathString + " --> " + pkg.codePath);
}
            final InstallArgs args = createInstallArgsForExisting(
                    packageFlagsToInstallFlags(pkgSetting), pkgSetting.codePathString,
@@ -8445,6 +8519,10 @@ public class PackageManagerService extends IPackageManager.Stub
        }
        if (scanSystemPartition && isSystemPkgUpdated && !isSystemPkgBetter) {
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "THROW exception; system pkg version not good enough");
}
            // The version of the application on the /system partition is less than or
            // equal to the version on the /data partition. Throw an exception and use
            // the application already installed on the /data partition.
@@ -8470,6 +8548,11 @@ public class PackageManagerService extends IPackageManager.Stub
                logCriticalInfo(Log.WARN,
                        "System package signature mismatch;"
                        + " name: " + pkgSetting.name);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "System package signature mismatch;"
        + " name: " + pkgSetting.name);
}
                try (PackageFreezer freezer = freezePackage(pkg.packageName,
                        "scanPackageInternalLI")) {
                    deletePackageLIF(pkg.packageName, null, true, null, 0, null, false, null);
@@ -8484,6 +8567,13 @@ public class PackageManagerService extends IPackageManager.Stub
                        + " name: " + pkgSetting.name
                        + "; " + pkgSetting.versionCode + " --> " + pkg.getLongVersionCode()
                        + "; " + pkgSetting.codePathString + " --> " + pkg.codePath);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "System package enabled;"
        + " name: " + pkgSetting.name
        + "; " + pkgSetting.versionCode + " --> " + pkg.getLongVersionCode()
        + "; " + pkgSetting.codePathString + " --> " + pkg.codePath);
}
                InstallArgs args = createInstallArgsForExisting(
                        packageFlagsToInstallFlags(pkgSetting), pkgSetting.codePathString,
                        pkgSetting.resourcePathString, getAppDexInstructionSets(pkgSetting));
@@ -8500,13 +8590,35 @@ public class PackageManagerService extends IPackageManager.Stub
                        + " name: " + pkgSetting.name
                        + "; old: " + pkgSetting.codePathString + " @ " + pkgSetting.versionCode
                        + "; new: " + pkg.codePath + " @ " + pkg.codePath);
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "System package disabled;"
        + " name: " + pkgSetting.name
        + "; old: " + pkgSetting.codePathString + " @ " + pkgSetting.versionCode
        + "; new: " + pkg.codePath + " @ " + pkg.codePath);
}
            }
        }
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Scan package");
Slog.e("TODD",
        "Pre: " + (pkgSetting==null?"<<NONE>>":pkgSetting.dumpState_temp()));
}
        final PackageParser.Package scannedPkg = scanPackageNewLI(pkg, parseFlags, scanFlags
                | SCAN_UPDATE_SIGNATURE, currentTime, user);
if (REFACTOR_DEBUG) {
pkgSetting = mSettings.getPackageLPr(pkg.packageName);
Slog.e("TODD",
        "Post: " + (pkgSetting==null?"<<NONE>>":pkgSetting.dumpState_temp()));
}
        if (shouldHideSystemApp) {
if (REFACTOR_DEBUG) {
Slog.e("TODD",
        "Disable package: " + pkg.packageName);
}
            synchronized (mPackages) {
                mSettings.disableSystemPackageLPw(pkg.packageName, true);
            }
+29 −0
Original line number Diff line number Diff line
@@ -97,6 +97,35 @@ public final class PackageSetting extends PackageSettingBase {
            + " " + name + "/" + appId + "}";
    }

    // Temporary to catch potential issues with refactoring
    public String dumpState_temp() {
        String flags = "";
        flags += ((pkgFlags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0 ? "U" : "");
        flags += ((pkgFlags & ApplicationInfo.FLAG_SYSTEM) != 0 ? "S" : "");
        if ("".equals(flags)) {
            flags = "-";
        }
        String privFlags = "";
        privFlags += ((pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_PRIVILEGED) != 0 ? "P" : "");
        privFlags += ((pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_OEM) != 0 ? "O" : "");
        privFlags += ((pkgPrivateFlags & ApplicationInfo.PRIVATE_FLAG_VENDOR) != 0 ? "V" : "");
        if ("".equals(privFlags)) {
            privFlags = "-";
        }
        return "PackageSetting{"
                + Integer.toHexString(System.identityHashCode(this))
                + " " + name + (realName == null ? "" : "("+realName+")") + "/" + appId + (sharedUser==null?"":" u:" + sharedUser.name+"("+sharedUserId+")")
                + ", ver:" + versionCode
                + ", path: " + codePath
                + ", pABI: " + primaryCpuAbiString
                + ", sABI: " + secondaryCpuAbiString
                + ", oABI: " + cpuAbiOverrideString
                + ", flags: " + flags
                + ", privFlags: " + privFlags
                + ", pkg: " + (pkg == null ? "<<NULL>>" : pkg.dumpState_temp())
                + "}";
    }

    public void copyFrom(PackageSetting orig) {
        super.copyFrom(orig);
        doCopy(orig);