summaryrefslogtreecommitdiff
path: root/tests/DynamicCodeLoggerIntegrationTests/src/cpp/test_executable.cpp
diff options
context:
space:
mode:
authorRobert Carr <racarr@google.com>2019-01-31 11:14:30 -0800
committerRobert Carr <racarr@google.com>2019-01-31 11:14:30 -0800
commitd8e4fb78699c1475e0a1ed3ab7bb0b6e6634d925 (patch)
treec351a2d04a106aede7e37ab67f2f726c5a56ae9e /tests/DynamicCodeLoggerIntegrationTests/src/cpp/test_executable.cpp
parentffa0d6c94453c1fcb70d6b29894e1e2d95fffb85 (diff)
AppWindowToken: Guard against null SurfaceControl in prepareSurfaces
It seems this code was written with the assumption that if prepareSurfaces is called, then we must be attached to the hiearchy and we must have a valid surface. As always though, the story runs deeper. We can actually call AppWindowToken#prepareSurfaces within the scope of AppWindowToken#removeImmediately. This transpires via these steps: 1. AppWindowToken removes children. 2. Child windowstate calls WMS#postWindowRemoveCleanupLocked 3. WMS immediately performs surface placement. 4. Surface placement leads to AppWindowToken#prepareSurfaces. This means that prepareSurfaces can be called after we have set mSurfaceControl to null but before the parent has removed us from its list, and that the assumption that the control must be non-null in prepareSurfaces was false. Bug: 123606376 Test: Makes one of them crash less Change-Id: Ic2985cb6f2a31613de5942926b036fd24a91e68a
Diffstat (limited to 'tests/DynamicCodeLoggerIntegrationTests/src/cpp/test_executable.cpp')
0 files changed, 0 insertions, 0 deletions