Merge "Include progname in malloc hook logs."
diff --git a/src/profiling/memory/heapprofd_producer.cc b/src/profiling/memory/heapprofd_producer.cc
index 259ef50..a131364 100644
--- a/src/profiling/memory/heapprofd_producer.cc
+++ b/src/profiling/memory/heapprofd_producer.cc
@@ -482,6 +482,7 @@
 void HeapprofdProducer::StopDataSource(DataSourceInstanceID id) {
   auto it = data_sources_.find(id);
   if (it == data_sources_.end()) {
+    endpoint_->NotifyDataSourceStopped(id);
     if (mode_ == HeapprofdMode::kCentral)
       PERFETTO_DFATAL_OR_ELOG(
           "Trying to stop non existing data source: %" PRIu64, id);
@@ -644,9 +645,6 @@
 void HeapprofdProducer::Flush(FlushRequestID flush_id,
                               const DataSourceInstanceID* ids,
                               size_t num_ids) {
-  if (num_ids == 0)
-    return;
-
   size_t& flush_in_progress = flushes_in_progress_[flush_id];
   PERFETTO_DCHECK(flush_in_progress == 0);
   flush_in_progress = num_ids;
@@ -655,6 +653,7 @@
     if (it == data_sources_.end()) {
       PERFETTO_DFATAL_OR_ELOG("Trying to flush unknown data-source %" PRIu64,
                               ids[i]);
+      flush_in_progress--;
       continue;
     }
     DataSource& data_source = it->second;
@@ -671,6 +670,10 @@
     };
     data_source.trace_writer->Flush(std::move(callback));
   }
+  if (flush_in_progress == 0) {
+    endpoint_->NotifyFlushComplete(flush_id);
+    flushes_in_progress_.erase(flush_id);
+  }
 }
 
 void HeapprofdProducer::FinishDataSourceFlush(FlushRequestID flush_id) {