diff options
author | wilsonshih <wilsonshih@google.com> | 2020-02-24 11:51:43 +0800 |
---|---|---|
committer | Wei Sheng Shih <wilsonshih@google.com> | 2020-03-13 08:08:35 +0000 |
commit | b6cd9c2003d258e1f60a839d22720f442e150d52 (patch) | |
tree | a3678fd5dd57b1cbfc089216e5ed45416a0cede7 /tools/aapt2/java/JavaClassGenerator_test.cpp | |
parent | 6a1b278be8915a47660c27897a662c51f7051b6a (diff) |
Fix race condition while WallpaperMS rebinding service.
Connection object could not receive onServiceConnected after
new process of the service was active.
How issue happen:
1. The process of wallpaper service died, AM schedule to restart,
WallpaperMS schedule to rebind.
2. WallpaperMS bind service with new connection object.
=> ActiveService bring up new process. Add this ServiceRecord to
mPendingServices.
3. WallpaperMS unbind previous connection object.
=> ActiveService remove previous connection, also remove this
ServiceRecord object from mPendingServices list.
4. Process ready, attach application but cannot find the service
from pendingServices.
Solution: Do not remove the ServiceRecord object from mPendingServices
if there is any connection left.
Also use runnable object instead of method reference.
Bug: 148834472
Test: atest WallpaperManagerTest WallpaperManagerServiceTests
Change-Id: I3adec66de8ac0c7efc9ad3ffbf604b01eacb5720
Merged-In: I3adec66de8ac0c7efc9ad3ffbf604b01eacb5720
(cherry picked from commit d1551333823f4e86ec0e19b65c4faafeb617f87b)
Diffstat (limited to 'tools/aapt2/java/JavaClassGenerator_test.cpp')
0 files changed, 0 insertions, 0 deletions