================
@@ -1064,6 +1065,29 @@ const char *Process::GetExitDescription() {
 bool Process::SetExitStatus(int status, llvm::StringRef exit_string) {
   // Use a mutex to protect setting the exit status.
   std::lock_guard<std::mutex> guard(m_exit_status_mutex);
+  telemetry::ScopedDispatcher<telemetry::ProcessExitInfo> helper;
+
+  // Find the executable-module's UUID, if available.
+  UUID exec_uuid;
+  // Check if there is (still) a valid target and get the debugger and 
exec_uuid
+  // from it.
+  TargetSP target_sp(Debugger::FindTargetWithProcessID(m_pid));
+  if (target_sp) {
+    helper.SetDebugger(&(target_sp->GetDebugger()));
+    exec_uuid = target_sp->GetExecModuleUUID();
----------------
oontvoo wrote:

@labath  Ah, I've found the test that crashed! (See the build log on this PR). 
Without the check for the validity of the Target pointer and the module 
pointer, the test crashed/timedout. By contrast, if we added this check, the 
whole test suite passed:

```
  TargetSP target_sp(Debugger::FindTargetWithProcessID(m_pid));
   if (target_sp) {
    helper.SetDebugger(&(target_sp->GetDebugger()));
    if (ModuleSP mod = target_sp->GetExecutableModule())
      module_uuid = mod->GetUUID();
   }

```



https://github.com/llvm/llvm-project/pull/127834
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to