[roll] Roll fuchsia [starnix] Fix Weak<Waiter> leaks keeping Waiter's memory alive

Turns out keeping Weaks around prevents the memory used by the object
from being freed, even though the object is dropped.

The bug was triggered by binder adding a waiter to multiple wait queues,
then dropping the waiter after one of the wait queues is woken. The wake
removes the waiter only from the wait queue that got woken; and the
other wait queue would keep its weak reference forever. This leaked the
memory for a few Waiters on each frame due to the binder calls involving
surfaceflinger.

Part of this change adapts WaiterRef::access to not create a new Waiter
object, so Waiter actually has a single owner again. This makes it
possible to use Drop for cleanup.

Original-Bug: b/288467014
Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/898905
Original-Revision: 1e548a7102053a96bbe7ec867dbb36393bf57055
GitOrigin-RevId: 996742ed49e3918dde1e981a81bebda076e38d86
Change-Id: I81ed128929bb241ff9a2dc89503117caa9c86b06
1 file changed
tree: 7e85faa7bb561c0de7e26f4c321e6608e64d2f89
  1. git-hooks/
  2. infra/
  3. third_party/
  4. cts
  5. firmware
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
  14. toolchain
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance via the IRC channel #fuchsia on Freenode.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.