summaryrefslogtreecommitdiff
path: root/tools/aidl/generate_java.cpp
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-05-03 17:04:02 -0700
committerMathias Agopian <mathias@google.com>2011-05-23 16:13:20 -0700
commitfa21cb2e58838761157d3ee929a77e23b602bd01 (patch)
tree3228eab27026cf39a1847731120ef30419211bc5 /tools/aidl/generate_java.cpp
parenta725ccda9e0e9aec80f9f0b1a63d94d46a13c4b4 (diff)
Fix a race in SurfaceFlinger that could cause layers to be leaked forever.
The transaction flags were atomically read-and-cleared to determine if a transaction was needed, in the later case, mStateLock was taken to keep the current state still during the transaction. This left a small window open, where a layer could be removed after the transaction flags were checked but before the transaction was started holding the lock. In that situation eTraversalNeeded would be set but only seen during the next transaction cycle; however, because we're handling this transaction (because of another flag) it will be commited, "loosing" the information about the layer being removed -- so when the next transaction cycle due to eTraversalNeeded starts, it won't notice that layers have been removed and won't populated the ditchedLayers array. Bug: 4483049 Change-Id: Ibb5989312f871339928ee1aa3f9567770d72969b
Diffstat (limited to 'tools/aidl/generate_java.cpp')
0 files changed, 0 insertions, 0 deletions