[roll] Roll fuchsia [fidl][cpp] Release response contexts on destroy

While fixing another bug related to racing FIDL client async teardown
against two-way method calls, a test was added that checks for a
violated race 500 times. It turns out that this exposed another race
condition related to un-cleared response contexts. If a client initiates
a two-way transaction during async teardown, there is a window after the
contexts have been cleared that the client is still live. This allowed
new two-way transactions to be added, which triggers a debug assertion
on destruction.

This change adds an additional redundant call to
`ReleaseResponseContexts` in the destructor for `ClientBase` to prevent
these assertions from being triggered. This was originally how all
response contexts were released, but this behavior was changed to more
eagerly cancel pending transactions. We haven't been seeing this debug
assertion anywhere in our codebase, so it's safe to say that we don't
actually have this behavior in practice.

Original-Original-Fixed: 540393022
Original-Original-Fixed: 540293576
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1734610
Original-Original-Revision: 82c987485853b49f9fc3712e2f96b00106d7ffb5
GitOrigin-RevId: 9036b2df03c5ca17bac4c23d3709b8f3dbf5bc3a
Change-Id: I50f26fe4ebe34442ccfc86d2153f1a0fd69d78a6
1 file changed
tree: 8dfcaaa762ff8c964b0383e7b1229443bb6495ae
  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.