OSDN Git Service

Avoid deadlock issue when dump in pms
authorHongcheng Xie <hongcheng.xie@intel.com>
Tue, 12 Jan 2016 08:33:16 +0000 (16:33 +0800)
committerChih-Wei Huang <cwhuang@linux.org.tw>
Wed, 20 Jul 2016 09:53:23 +0000 (17:53 +0800)
Move package installer service dump action out of
mPackages lock to avoid deadlock.

Change-Id: I255659defe801109707000cb7a8db67b1cf56363
Tracked-On: https://jira01.devtools.intel.com/browse/OAM-8973
Signed-off-by: Hongcheng Xie <hongcheng.xie@intel.com>
Reviewed-on: https://android.intel.com:443/458057

services/core/java/com/android/server/pm/PackageManagerService.java

index c1d091b..fb49696 100644 (file)
@@ -15308,13 +15308,6 @@ public class PackageManagerService extends IPackageManager.Stub {
                 mSettings.dumpSharedUsersLPr(pw, packageName, permissionNames, dumpState, checkin);
             }
 
-            if (!checkin && dumpState.isDumping(DumpState.DUMP_INSTALLS) && packageName == null) {
-                // XXX should handle packageName != null by dumping only install data that
-                // the given package is involved with.
-                if (dumpState.onTitlePrinted()) pw.println();
-                mInstallerService.dump(new IndentingPrintWriter(pw, "  ", 120));
-            }
-
             if (!checkin && dumpState.isDumping(DumpState.DUMP_MESSAGES) && packageName == null) {
                 if (dumpState.onTitlePrinted()) pw.println();
                 mSettings.dumpReadMessagesLPr(pw, dumpState);
@@ -15351,6 +15344,13 @@ public class PackageManagerService extends IPackageManager.Stub {
                 }
             }
         }
+
+        if (!checkin && dumpState.isDumping(DumpState.DUMP_INSTALLS) && packageName == null) {
+            // XXX should handle packageName != null by dumping only install data that
+            // the given package is involved with.
+            if (dumpState.onTitlePrinted()) pw.println();
+            mInstallerService.dump(new IndentingPrintWriter(pw, "  ", 120));
+        }
     }
 
     private String dumpDomainString(String packageName) {