From b87ce123594e95de5596e828dfc84fae359d804e Mon Sep 17 00:00:00 2001 From: Tetsutoki Shiozawa Date: Wed, 8 Jun 2016 13:45:47 +0900 Subject: [PATCH] Solve the infinite loop on clearExternalStorageDataSync 5000 msec timeout is set for waiting DefaultContainerService, but it's not working. It's not possible to exit a wait loop even if it takes over 5000 msec. Bug: 29232999 Change-Id: I74a45637e0a3fa5a7b151e6b3dc0b3aaece96d53 --- .../java/com/android/server/pm/PackageManagerService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 7ea9038cc2c5b..abc1dc9182572 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -13330,8 +13330,9 @@ public class PackageManagerService extends IPackageManager.Stub { for (int curUser : users) { long timeout = SystemClock.uptimeMillis() + 5000; synchronized (conn) { - long now = SystemClock.uptimeMillis(); - while (conn.mContainerService == null && now < timeout) { + long now; + while (conn.mContainerService == null && + (now = SystemClock.uptimeMillis()) < timeout) { try { conn.wait(timeout - now); } catch (InterruptedException e) {