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.

(this is a cherry-pick of just the test part of ag/20347035 since the
actual fix landed through a merge from tm-dev)

Bug: 233338564
Bug: 155759761
Change-Id: Id1874abbff8f7a7b702542a943a8de3f3a52277a
Merged-In: Id1874abbff8f7a7b702542a943a8de3f3a52277a
diff --git a/Android.bp b/Android.bp
index 3886500..6ce03ca 100644
--- a/Android.bp
+++ b/Android.bp
@@ -8688,6 +8688,7 @@
     name: "perfetto_src_profiling_memory_end_to_end_tests",
     srcs: [
         "src/profiling/memory/heapprofd_end_to_end_test.cc",
+        "src/profiling/memory/heapprofd_producer_integrationtest.cc",
     ],
 }