[roll] Roll fuchsia [audio] Fix deadlock and crash in BaseCapturer shutdown

During asynchronous capture, the mix thread blocks on the
CapturePacketQueue condition variable waiting for pending packets.
If the client abruptly disconnects, the FIDL thread initiates a
shutdown and schedules a cleanup task on the mix thread.

However, since the mix thread is blocked on the condition variable,
it cannot execute any posted tasks. This results in a deadlock
where the mix thread remains blocked indefinitely and the capturer
is leaked. Proactively shutting down the packet queue on the FIDL
thread during BeginShutdown immediately wakes up the mix thread.

Additionally, when a Process() task is already queued in the mix
dispatcher before the cleanup task, it will run after the cleanup
task has set the state to Shutdown. When it runs, it previously
crashed with a fatal FX_CHECK(false). We now return ZX_OK to
exit the Process loop gracefully.

Original-Original-Bug: 376345697
Original-Original-Bug: 518782757
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1634620
Original-Original-Revision: df14a0cbe336b542e0c185388e14f24fec3abbe5
GitOrigin-RevId: 6c5ba23ecfe43fd51a14467b52754241d5f1dbe2
Change-Id: I0d266e577326fa8fc1dc647607641be0755dd533
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1638983
Cr-Commit-Position: refs/heads/main@{#194147}
1 file changed
tree: 6fbf8247ae1d5bfa8088f0b817dae8713b66d376
  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.