diff options
author | Marco Nelissen <marcone@google.com> | 2014-08-27 15:20:45 -0700 |
---|---|---|
committer | Marco Nelissen <marcone@google.com> | 2014-08-27 15:40:49 -0700 |
commit | 75c672fc376ef9b3ceff61a96513242b0e5ebd60 (patch) | |
tree | 28d81d820577d62665ef3f565b69ee3580e53857 /include | |
parent | 9dd4a2ddd7caf8cbe50d8a76e0ec3e0274d2bce6 (diff) | |
download | frameworks_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