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
Loading
Please register or sign in to comment