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

Skip to content
Commit 9da89484 authored by Hani Kazmi's avatar Hani Kazmi
Browse files

Add a lock when unwrapping lazy value in bundles

This commit addresses a race condition introduced in ag/18909939. If
multiple threads try to read the same lazy value out of mMap in
parallel, it is possible for both to decrement mLazyValues, thus failing
the precondition check, or recycling the parcel twice.

While bundles do not guarantee thread safety, there have already been
enough reports of impacted usecases that it is worth mitigating at the
root.

It is possible to shorten the lock to not include the recycle block, but
both implementations did not show any performance difference
in preliminary testing.

Bug: 241888992
Test: Reproduced race condition on physical device, and validated that
code change fixes it.
Test: atest android.os.cts.ParcelTest android.os.cts.BundleTest
android.os.BundleTest android.os.ParcelTest
android.os.BundleRecylingTest

Change-Id: I5d261d4315a123008b226c364fec73634e08a150
parent bb3501c4
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