[Lldb-commits] [lldb] [NFC][lldb]Fix stack-use-after-free bugs in exit-callbacks. (PR #135763)

Vy Nguyen via lldb-commits lldb-commits at lists.llvm.org
Tue Apr 15 01:50:40 PDT 2025


https://github.com/oontvoo created https://github.com/llvm/llvm-project/pull/135763

None

>From dd74c3abe3a69e6c3cc4b9c22a38ca09997848f7 Mon Sep 17 00:00:00 2001
From: Vy Nguyen <vyng at google.com>
Date: Tue, 15 Apr 2025 04:42:30 -0400
Subject: [PATCH] [NFC][lldb]Fix stack-use-after-free bugs in exit-callbacks.

---
 lldb/source/Target/Process.cpp | 9 +++++----
 lldb/source/Target/Target.cpp  | 2 +-
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/lldb/source/Target/Process.cpp b/lldb/source/Target/Process.cpp
index 633f7488dc76a..73557eb767c72 100644
--- a/lldb/source/Target/Process.cpp
+++ b/lldb/source/Target/Process.cpp
@@ -1047,10 +1047,11 @@ bool Process::SetExitStatus(int status, llvm::StringRef exit_string) {
     info->exit_desc = {status, exit_string.str()};
   });
 
-  helper.DispatchOnExit([&](telemetry::ProcessExitInfo *info) {
-    info->module_uuid = module_uuid;
-    info->pid = m_pid;
-  });
+  helper.DispatchOnExit(
+      [module_uuid, pid = m_pid](telemetry::ProcessExitInfo *info) {
+        info->module_uuid = module_uuid;
+        info->pid = pid;
+      });
 
   m_exit_status = status;
   if (!exit_string.empty())
diff --git a/lldb/source/Target/Target.cpp b/lldb/source/Target/Target.cpp
index 42b1561fb2993..b6186b76d6236 100644
--- a/lldb/source/Target/Target.cpp
+++ b/lldb/source/Target/Target.cpp
@@ -1578,7 +1578,7 @@ void Target::SetExecutableModule(ModuleSP &executable_sp,
       info->is_start_entry = true;
     });
 
-    helper.DispatchOnExit([&](telemetry::ExecutableModuleInfo *info) {
+    helper.DispatchOnExit([&, pid](telemetry::ExecutableModuleInfo *info) {
       info->exec_mod = executable_sp;
       info->uuid = executable_sp->GetUUID();
       info->pid = pid;



More information about the lldb-commits mailing list