[Lldb-commits] [lldb] r365400 - [lldb, windows] When StartMonitoring fails, return a proper error

Stella Stamenova via lldb-commits lldb-commits at lists.llvm.org
Mon Jul 8 15:09:08 PDT 2019


Author: stella.stamenova
Date: Mon Jul  8 15:09:08 2019
New Revision: 365400

URL: http://llvm.org/viewvc/llvm-project?rev=365400&view=rev
Log:
[lldb, windows] When StartMonitoring fails, return a proper error

This is possible now that the function returns an llvm::Expected

Modified:
    lldb/trunk/source/Host/windows/HostProcessWindows.cpp

Modified: lldb/trunk/source/Host/windows/HostProcessWindows.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Host/windows/HostProcessWindows.cpp?rev=365400&r1=365399&r2=365400&view=diff
==============================================================================
--- lldb/trunk/source/Host/windows/HostProcessWindows.cpp (original)
+++ lldb/trunk/source/Host/windows/HostProcessWindows.cpp Mon Jul  8 15:09:08 2019
@@ -82,20 +82,21 @@ bool HostProcessWindows::IsRunning() con
 
 llvm::Expected<HostThread> HostProcessWindows::StartMonitoring(
     const Host::MonitorChildProcessCallback &callback, bool monitor_signals) {
-  HostThread monitor_thread;
   MonitorInfo *info = new MonitorInfo;
   info->callback = callback;
 
   // Since the life of this HostProcessWindows instance and the life of the
   // process may be different, duplicate the handle so that the monitor thread
   // can have ownership over its own copy of the handle.
-  HostThread result;
   if (::DuplicateHandle(GetCurrentProcess(), m_process, GetCurrentProcess(),
-                        &info->process_handle, 0, FALSE, DUPLICATE_SAME_ACCESS))
-    result = ThreadLauncher::LaunchThread("ChildProcessMonitor",
-                                          HostProcessWindows::MonitorThread,
-                                          info);
-  return result;
+                        &info->process_handle, 0, FALSE, DUPLICATE_SAME_ACCESS)) {
+    return ThreadLauncher::LaunchThread("ChildProcessMonitor",
+                                        HostProcessWindows::MonitorThread,
+                                        info);
+  } else {
+    DWORD err = GetLastError();
+    return llvm::errorCodeToError(std::error_code(err, std::system_category()));
+  }
 }
 
 lldb::thread_result_t HostProcessWindows::MonitorThread(void *thread_arg) {




More information about the lldb-commits mailing list