[roll] Roll fuchsia [diagnostics] Fix hard spin in detect-stall

When `stop_on_idle_timeout_millis` is configured to 0 or a very small
value, the debounce interval is 0, causing fasync::Timer to expire
immediately on its first poll.

If a stream stall is detected, but there are outstanding responders or
control handles, the unbind attempt `Arc::try_unwrap` fails. The code
then synchronously loops inside `poll_next` to retry after the next
debounce interval. With a 0 debounce interval, the timer immediately
fires again, resulting in a tight synchronous infinite loop that never
yields to the async executor (consuming 100% CPU and making zero
syscalls).

This change resolves the issue in two ways:

1. Enforces a minimum 1ms debounce interval if less than 1ms or negative
   is given.
2. Yields Poll::Pending rather than looping when unbinding fails. This
   ensures control is returned to the event loop so that other tasks can
   run and drop their outstanding responders.

Original-Original-Bug: 515836103
Test: Maunal testing on Sorrel and existing unit tests.
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1621787
Original-Original-Revision: 453021096cb210d0873eea8ddf6a145220fcc698
GitOrigin-RevId: 18cecc57352fac7b4c8192e2687d658d811021f4
Change-Id: I1e9e66d9e5debe25f0bc2b74089092b222220a4e
1 file changed
tree: 93a7298578843f3b2c4f0453ce5d2e3771844933
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
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 in one of the communication channels documented at get involved.

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.