summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorMarco Nelissen <marcone@google.com>2014-08-27 15:20:45 -0700
committerMarco Nelissen <marcone@google.com>2014-08-27 15:40:49 -0700
commit75c672fc376ef9b3ceff61a96513242b0e5ebd60 (patch)
tree28d81d820577d62665ef3f565b69ee3580e53857 /include
parent9dd4a2ddd7caf8cbe50d8a76e0ec3e0274d2bce6 (diff)
downloadframeworks_av-75c672fc376ef9b3ceff61a96513242b0e5ebd60.zip
frameworks_av-75c672fc376ef9b3ceff61a96513242b0e5ebd60.tar.gz
frameworks_av-75c672fc376ef9b3ceff61a96513242b0e5ebd60.tar.bz2
Fix potential deadlock in unregisterStaleHandlers()
The scenario is that a call to unregisterStaleHandlers() is in progress, and is holding a temporary sp<ALooper> reference to an active ALooper inside of the loop. At this point the only other remaining external reference to the ALooper goes away, so the temporary sp<ALooper> in the loop is now the only reference keeping that object alive. When the loop iterates and the sp<> goes out of scope, the ALooper destructor is called, which in turn calls unregisterStaleHandlers again, resulting in a recursive lock. Bug: 17300093 Change-Id: I116f2ffab4ae7c43b6bcf54a367ae6f9d77c9626
Diffstat (limited to 'include')
0 files changed, 0 insertions, 0 deletions