[pm] fix crash caused by race condition onUidGone
GentleUpdateHelper monitors uids when they are no longer running and informs installers when an installation can be proceeded. A race race condition can happen when HotwordDetectionService stops running, and its isolated uid's owner uid has also been recently removed, which causes an uncaught exception in pm's code, causing system server crash. BUG: 286903116 Test: builds Change-Id: I05662d2268d6e94132fb62e75908525dccba9ecb
This commit is contained in:
@@ -4311,7 +4311,12 @@ public class ComputerEngine implements Computer {
|
||||
if (Process.isIsolatedUid(uid)
|
||||
&& mPermissionManager.getHotwordDetectionServiceProvider() != null
|
||||
&& uid == mPermissionManager.getHotwordDetectionServiceProvider().getUid()) {
|
||||
uid = getIsolatedOwner(uid);
|
||||
try {
|
||||
uid = getIsolatedOwner(uid);
|
||||
} catch (IllegalStateException e) {
|
||||
// If the owner uid doesn't exist, just use the current uid
|
||||
Slog.wtf(TAG, "Expected isolated uid " + uid + " to have an owner", e);
|
||||
}
|
||||
}
|
||||
final int callingUserId = UserHandle.getUserId(callingUid);
|
||||
final int appId = UserHandle.getAppId(uid);
|
||||
@@ -4352,7 +4357,12 @@ public class ComputerEngine implements Computer {
|
||||
if (Process.isIsolatedUid(uid)
|
||||
&& mPermissionManager.getHotwordDetectionServiceProvider() != null
|
||||
&& uid == mPermissionManager.getHotwordDetectionServiceProvider().getUid()) {
|
||||
uid = getIsolatedOwner(uid);
|
||||
try {
|
||||
uid = getIsolatedOwner(uid);
|
||||
} catch (IllegalStateException e) {
|
||||
// If the owner uid doesn't exist, just use the current uid
|
||||
Slog.wtf(TAG, "Expected isolated uid " + uid + " to have an owner", e);
|
||||
}
|
||||
}
|
||||
final int appId = UserHandle.getAppId(uid);
|
||||
final Object obj = mSettings.getSettingBase(appId);
|
||||
|
||||
Reference in New Issue
Block a user