Fix insufficient synchronization (8/n)
mSyncRequired must be accessed within the lock.
Bug: 178675924
Test: atest PackageWatchdogTest
Change-Id: Ie975e5910de53af670862de48ccf0cd4eeff0184
diff --git a/services/core/java/com/android/server/PackageWatchdog.java b/services/core/java/com/android/server/PackageWatchdog.java
index 61cbe17..6a53dd6 100644
--- a/services/core/java/com/android/server/PackageWatchdog.java
+++ b/services/core/java/com/android/server/PackageWatchdog.java
@@ -259,10 +259,7 @@
mIsPackagesReady = true;
mHealthCheckController.setCallbacks(packageName -> onHealthCheckPassed(packageName),
packages -> onSupportedPackages(packages),
- () -> {
- mSyncRequired = true;
- syncRequestsAsync();
- });
+ this::onSyncRequestNotified);
setPropertyChangedListenerLocked();
updateConfigs();
registerConnectivityModuleHealthListener();
@@ -789,6 +786,13 @@
}
}
+ private void onSyncRequestNotified() {
+ synchronized (mLock) {
+ mSyncRequired = true;
+ syncRequestsAsync();
+ }
+ }
+
@GuardedBy("mLock")
private Set<String> getPackagesPendingHealthChecksLocked() {
Set<String> packages = new ArraySet<>();