Fix crash issue on Storage Manager app

StorageManager app Start/Exit many times occur crash if there are over
100 unused app.
Because ApplicationsState.BackgroundHandler will update AppEntry'Size
during the ApplicationsState.MainHandler sort all AppEntry with
SIZE_COMPARATOR. In this case, SIZE_COMPARATOR will occur
"IllegalArgumentException Comparison method violates its general
contract!".
In ordre to fix the crash, add mEntriesMap synchronized during the AppEntry
sort operation.

Bug: 34800804

Change-Id: Ic670df01fadde648a79c0d01820efe772a898958
This commit is contained in:
Su, Weihua
2017-01-18 14:35:13 +08:00
committed by Shunta Sato
parent 4533b1ccdd
commit 5971d8a0ce

View File

@@ -649,7 +649,11 @@ public class ApplicationsState {
}
if (comparator != null) {
Collections.sort(filteredApps, comparator);
synchronized (mEntriesMap) {
// Locking to ensure that the background handler does not mutate
// the size of AppEntries used for ordering while sorting.
Collections.sort(filteredApps, comparator);
}
}
synchronized (mRebuildSync) {