Device stuck in boot due to ArrayIndexOutOfBoundsException

Problem: {

//frameworks/base/services/core/java/com/android/server/pm/Installer.java
final CreateAppDataResult[] results =
installer.createAppDataBatched(args);  // createAppDataBatched() return
empty

E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: PackageManager
E AndroidRuntime: java.lang.ArrayIndexOutOfBoundsException: length=0;
index=0
E AndroidRuntime:        at
com.android.server.pm.Installer$Batch.execute(Installer.java:419)
E AndroidRuntime:        at
com.android.server.pm.AppDataHelper.executeBatchLI(AppDataHelper.java:167)
E AndroidRuntime:        at
com.android.server.pm.AppDataHelper.prepareAppDataPostCommitLIF(AppDataHelper.java:162)

Bug : https://partnerissuetracker.corp.google.com/issues/284269814
}

Solution: {
   Handling ArrayIndexOutOfBoundsException by changing size of loop from
   args.length  to  results.length
   }

   Bug: 284269814

Change-Id: I88678483ec2a6c6dbc46d12375affd62da64d140
Signed-off-by: Arun Goyal <arungoyalag@gmail.com>
This commit is contained in:
Arun Goyal
2023-06-15 15:57:59 +05:30
parent f6d437176c
commit b1c9cc7442

View File

@@ -390,7 +390,7 @@ public class Installer extends SystemService {
args[j] = mArgs.get(i + j);
}
final CreateAppDataResult[] results = installer.createAppDataBatched(args);
for (int j = 0; j < args.length; j++) {
for (int j = 0; j < results.length; j++) {
final CreateAppDataResult result = results[j];
final CompletableFuture<Long> future = mFutures.get(i + j);
if (result.exceptionCode == 0) {