Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 282cf6ea authored by Riddle Hsu's avatar Riddle Hsu
Browse files

Fix missing incremental process starting position of LRU list

When searching insertion position for a process with clients activities,
if the position goes to mLruProcessActivityStart but we don't increase
mLruProcessActivityStart, it will be like hide a slot. Then when removing
the process from LRU, the starting position will be decreased, that causes
a slot is lost. After this condition happens many times, the starting
position (mLruProcessServiceStart in the practical case) becomes a negative
number which leads to IndexOutOfBoundsException.

The expected example:
 Assume to insert a new process X to [2]:
  [0]A
  [1]B
  [2]C <- mLruProcess(Activity/Service)Start
  [3]D
 After insertion, the starting position increased:
  [0]A
  [1]B
  [2]X
  [3]C <- mLruProcess(Activity/Service)Start
  [4]D

Bug: 126427214
Test: Build system/extras/tests/memeater and push to device.
      Execute multiple memeater instances to consume most of RAM.
      Observe home is being killed and restarted frequently for a
      long time without IndexOutOfBoundsException from LRU list.

Change-Id: I8a925aa320141e55e18fa4312ba91cb628bcc47d
parent 5af401bd
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment