binder: Bp: clear DRs in onLastStrongRef
This way, if unlink is not called, the binder will properly destruct. Currently linkToDeath takes a weakRef, and when BR_DEAD_BINDER is received, userspace binder sends BC_CLEAR_DEATH_NOTIFICATION for each death notification. Then, when it receives BR_CLEAR_DEATH_NOTIFICATION_DONE (maybe later?), it clears the weak ref. Right now, ~BpBinder also clears these. However, by moving this clearing up to onLastStrongRef, forgotten unlinks will no longer cause a cycle (that is only cleared when the service dies). Bug: 134576445 Test: manually linking to death many times without unlinking. Change-Id: Iaf6ce7a65c334805ae2dc146b9f0aa7731a99c0d
Loading
Please register or sign in to comment