diff options
| author | 2023-04-27 19:38:00 +0000 | |
|---|---|---|
| committer | 2023-05-01 17:16:36 +0000 | |
| commit | 7957867cc13bd17c55eaf5624c2905037d881b59 (patch) | |
| tree | 07cd2f9545b0f6051f2cbbcddd0586304b980d51 /libs/gui/BLASTBufferQueue.cpp | |
| parent | 9843b07b819443a394c40b2eeb7a69bb59630101 (diff) | |
sm: lazy service - fix race
There is a possible race:
- service registers binder A
- service registers client callback (cc1) for A
- sm send cc1 "A hasClients"
- service registers binder A (again - bad behavior!)
- side effect: "hasClients" implicitly set to false
- service registers client callback (cc2) for A
- sm sends cc1 and cc2 "A hasClients"
Due to an intentionally overly careful check in client
callbacks, they crash when this double-send of
'hasClients' is hit.
This CL retains the state of cc1 in order to fix the
issue. Comments are added with various details about
the implementation, and b/279948722 is filed to
resolve these comments.
Bug: 279898063
Test: aidl_lazy_test
Change-Id: Ida443d5b02f19736baabdc57ff283995cdcc2a87
Diffstat (limited to 'libs/gui/BLASTBufferQueue.cpp')
0 files changed, 0 insertions, 0 deletions