diff --git a/src/traced/probes/process_stats_data_source.cc b/src/traced/probes/process_stats_data_source.cc
index 79f1b4a..7afe6ab 100644
--- a/src/traced/probes/process_stats_data_source.cc
+++ b/src/traced/probes/process_stats_data_source.cc
@@ -18,7 +18,6 @@
 
 #include <utility>
 
-#include "perfetto/trace/ps/process_tree.pbzero.h"
 #include "perfetto/trace/trace_packet.pbzero.h"
 #include "src/process_stats/file_utils.h"
 #include "src/process_stats/procfs_utils.h"
@@ -43,43 +42,48 @@
 
 void ProcessStatsDataSource::WriteAllProcesses() {
   auto trace_packet = writer_->NewTracePacket();
-  auto* trace_packet_ptr = &*trace_packet;
+  auto* process_tree = trace_packet->set_process_tree();
   std::set<int32_t>* seen_pids = &seen_pids_;
 
-  file_utils::ForEachPidInProcPath("/proc",
-                                   [trace_packet_ptr, seen_pids](int pid) {
-                                     // ForEachPid will list all processes and
-                                     // threads. Here we want to iterate first
-                                     // only by processes (for which pid ==
-                                     // thread group id)
-                                     if (procfs_utils::ReadTgid(pid) != pid)
-                                       return;
+  file_utils::ForEachPidInProcPath("/proc", [process_tree, seen_pids](int pid) {
+    // ForEachPid will list all processes and
+    // threads. Here we want to iterate first
+    // only by processes (for which pid ==
+    // thread group id)
+    if (procfs_utils::ReadTgid(pid) != pid)
+      return;
 
-                                     WriteProcess(pid, trace_packet_ptr);
-                                     seen_pids->insert(pid);
-                                   });
+    WriteProcess(pid, process_tree);
+    seen_pids->insert(pid);
+  });
+
   trace_packet->Finalize();
+
+  // TODO(hjd): Remove this once the service flushes the producers on teardown.
   writer_->Flush();
 }
 
 void ProcessStatsDataSource::OnPids(const std::vector<int32_t>& pids) {
-  auto trace_packet = writer_->NewTracePacket();
+  TraceWriter::TracePacketHandle trace_packet{};
+  protos::pbzero::ProcessTree* process_tree = nullptr;
   for (int32_t pid : pids) {
     auto it_and_inserted = seen_pids_.emplace(pid);
-    if (it_and_inserted.second)
-      WriteProcess(pid, &*trace_packet);
+    if (!it_and_inserted.second)
+      continue;
+    if (!process_tree) {
+      trace_packet = writer_->NewTracePacket();
+      process_tree = trace_packet->set_process_tree();
+    }
+    WriteProcess(pid, process_tree);
   }
 }
 
 // static
-void ProcessStatsDataSource::WriteProcess(
-    int32_t pid,
-    protos::pbzero::TracePacket* trace_packet) {
-  auto* process_tree = trace_packet->set_process_tree();
-
+void ProcessStatsDataSource::WriteProcess(int32_t pid,
+                                          protos::pbzero::ProcessTree* tree) {
   std::unique_ptr<ProcessInfo> process = procfs_utils::ReadProcessInfo(pid);
   procfs_utils::ReadProcessThreads(process.get());
-  auto* process_writer = process_tree->add_processes();
+  auto* process_writer = tree->add_processes();
   process_writer->set_pid(process->pid);
   process_writer->set_ppid(process->ppid);
   for (const auto& field : process->cmdline)
diff --git a/src/traced/probes/process_stats_data_source.h b/src/traced/probes/process_stats_data_source.h
index 5766e4d..5054af1 100644
--- a/src/traced/probes/process_stats_data_source.h
+++ b/src/traced/probes/process_stats_data_source.h
@@ -22,6 +22,7 @@
 #include <vector>
 
 #include "perfetto/base/weak_ptr.h"
+#include "perfetto/trace/ps/process_tree.pbzero.h"
 #include "perfetto/tracing/core/basic_types.h"
 #include "perfetto/tracing/core/data_source_config.h"
 #include "perfetto/tracing/core/trace_writer.h"
@@ -43,7 +44,7 @@
   void OnPids(const std::vector<int32_t>& pids);
 
  private:
-  static void WriteProcess(int32_t pid, protos::pbzero::TracePacket*);
+  static void WriteProcess(int32_t pid, protos::pbzero::ProcessTree*);
 
   ProcessStatsDataSource(const ProcessStatsDataSource&) = delete;
   ProcessStatsDataSource& operator=(const ProcessStatsDataSource&) = delete;
