commit | 7076286ad6373cdc79b989652929236f8e9841ef | [log] [tgz] |
---|---|---|
author | Daniele Di Proietto <ddiproietto@google.com> | Wed Nov 02 10:16:11 2022 +0000 |
committer | Daniele Di Proietto <ddiproietto@google.com> | Thu Nov 17 16:36:12 2022 +0000 |
tree | 5ffa91e66210c4cff6f103df585c2df3f4de6871 | |
parent | d85b69a13e9500910d715be5348dedb5f3fbe002 [diff] |
heapprofd: Fix crash when tracing service disconnects When the tracing service (traced) disconnects (because it crashes or other reasons), if heapprofd has an active client, it will crash, because: * HeapprofdProducer::Restart() is executed. * HeapprofdProducer destructor destroys its unwinding_workers_ * UnwindingWorker destroys its members. In order: * thread_task_runner_ is destroyed, so that the thread is stopped. * (If there's one connected client) client_data_ is destroyed. * ClientData includes a UnixSocket, which calls PostTask on thread_task_runner_. * thread_task_runner_ was destroyed earlier. This patch makes fixes the problem by destroying client_data_ (on thread_task_runner_) before destroying the thread_task_runner_ itself. Bug: 233338564 Bug: 155759761 Change-Id: Id1874abbff8f7a7b702542a943a8de3f3a52277a (cherry picked from commit abc9d3ea914ba24e4219fef68a67aca65b8c23a5) Merged-In: Id1874abbff8f7a7b702542a943a8de3f3a52277a
Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.
See https://perfetto.dev/docs or the /docs/ directory for documentation.