commit | c797cbc33f72ca45bf1ede9bd4b96d92eaa8da6b | [log] [tgz] |
---|---|---|
author | Jacob Rutherford <jruthe@fuchsia.infra.roller.google.com> | Thu Dec 12 06:36:16 2024 -0800 |
committer | Copybara-Service <copybara-worker@google.com> | Thu Dec 12 06:38:18 2024 -0800 |
tree | 66cd581b21bfd83272d9347d3eb0e0ad17bb7fbf | |
parent | 99d40565e0b7c5356e1bf7c53045e0c137dba9d7 [diff] |
[roll] Roll fuchsia [debugger] Refactor Curl code to not use RefPtr Recent changes to upstream libcurl exposed an issue with our lifetime handling of the Curl::MultiHandle object. It is now typical to see the curl callback functions called as a result of beginning curl's cleanup routines. This created an issue when tearing down the message loop, which owns lambda functions that have the last reference to the MultiHandle object, where more references would be created to the object from its own destructor, and would result in reentrantly destructing, which libcurl prevents. The solution is a more manual management of the MultiHandle's lifetime. There is a single object which will be destructed in the correct order when there are no more EasyHandles associated with it. This allows the callbacks to not require strong references to the object and for the object to persist until all of the data has been received from the remote end. In the case the remote end _never_ responds to a particular request, it is cleaned up as the first action of curl_global_cleanup. Test: fx test --host zxdb_tests -- --gtest_filter="Curl*" Original-Bug: b/382444850 Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1171173 Original-Revision: 6e3d8e07369cf6e431f9dcba48f5be4606b477d0 GitOrigin-RevId: 14a6bee0df33968cda41c67d434951e64437bc40 Change-Id: Ia5db49ab4507532600f4a8e513b56a330f7be889
This repository contains Fuchsia's Global Integration manifest files.
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.
First install Jiri.
Next run:
$ jiri init $ jiri import minimal https://fuchsia.googlesource.com/integration $ jiri update
Third party projects should have their own subdirectory in ./third_party
.