Callers of RegionView::StartWorker() MUST retain the return value in

order for shared-memory signaling to work properly.

BUG: 71618825
Change-Id: Ibaf86baaea6a0f3872a416aa0f6bbb97caf31f08
diff --git a/common/vsoc/lib/region_view.h b/common/vsoc/lib/region_view.h
index 2f07f71..bfe29db 100644
--- a/common/vsoc/lib/region_view.h
+++ b/common/vsoc/lib/region_view.h
@@ -146,7 +146,8 @@
                      uint32_t last_observed_value) override;
 
   // Starts the signal table scanner. This must be invoked by subclasses, which
-  // must store the returned unique_ptr as a class member.
+  // MUST store the returned unique_ptr as a class member.
+  __attribute__((warn_unused_result))
   std::unique_ptr<RegionWorker> StartWorker();
 
   // Returns a pointer to the start of region data that is cast to the given
diff --git a/guest/commands/vsoc_input_service/vsoc_input_service.cpp b/guest/commands/vsoc_input_service/vsoc_input_service.cpp
index 5fc9b43..d100a52 100644
--- a/guest/commands/vsoc_input_service/vsoc_input_service.cpp
+++ b/guest/commands/vsoc_input_service/vsoc_input_service.cpp
@@ -82,7 +82,7 @@
 bool VSoCInputService::ProcessEvents() {
   auto input_events_rv = InputEventsRegionView::GetInstance();
   // TODO(jemoreira): Post available devices to region
-  input_events_rv->StartWorker();
+  auto worker = input_events_rv->StartWorker();
 
   // Start device threads
   std::thread screen_thread([this]() {
diff --git a/guest/hals/audio/record_audio.cpp b/guest/hals/audio/record_audio.cpp
index fb8d25a..43330f4 100644
--- a/guest/hals/audio/record_audio.cpp
+++ b/guest/hals/audio/record_audio.cpp
@@ -81,7 +81,7 @@
   CHECK(audio_data_rv != nullptr);
 
   /* std::unique_ptr<vsoc::RegionWorker> audio_worker = */
-  audio_data_rv->StartWorker();
+  auto worker = audio_data_rv->StartWorker();
 
   std::unique_ptr<WaveWriter> writer;
   int64_t frameCount = 0ll;