From 35b291f02c106a8580c75c2b794525ba55904069 Mon Sep 17 00:00:00 2001 From: David Spickett Date: Thu, 30 Oct 2025 13:34:43 +0000 Subject: [PATCH] Revert "[LLDB][Windows]: Don't pass duplicate HANDLEs to CreateProcess (#165281)" This reverts commit 5430d7a9e60b0feb899862d287351e14aeeab6bd. --- .../Host/windows/ProcessLauncherWindows.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lldb/source/Host/windows/ProcessLauncherWindows.cpp b/lldb/source/Host/windows/ProcessLauncherWindows.cpp index e1b4b7e48c5a6..f5adadaf061bf 100644 --- a/lldb/source/Host/windows/ProcessLauncherWindows.cpp +++ b/lldb/source/Host/windows/ProcessLauncherWindows.cpp @@ -16,7 +16,6 @@ #include "llvm/Support/Program.h" #include -#include #include using namespace lldb; @@ -92,13 +91,13 @@ ProcessLauncherWindows::LaunchProcess(const ProcessLaunchInfo &launch_info, startupinfo.hStdOutput = stdout_handle ? stdout_handle : ::GetStdHandle(STD_OUTPUT_HANDLE); - std::unordered_set inherited_handles; + std::vector inherited_handles; if (startupinfo.hStdError) - inherited_handles.insert(startupinfo.hStdError); + inherited_handles.push_back(startupinfo.hStdError); if (startupinfo.hStdInput) - inherited_handles.insert(startupinfo.hStdInput); + inherited_handles.push_back(startupinfo.hStdInput); if (startupinfo.hStdOutput) - inherited_handles.insert(startupinfo.hStdOutput); + inherited_handles.push_back(startupinfo.hStdOutput); SIZE_T attributelist_size = 0; InitializeProcThreadAttributeList(/*lpAttributeList=*/nullptr, @@ -121,15 +120,13 @@ ProcessLauncherWindows::LaunchProcess(const ProcessLaunchInfo &launch_info, const FileAction *act = launch_info.GetFileActionAtIndex(i); if (act->GetAction() == FileAction::eFileActionDuplicate && act->GetFD() == act->GetActionArgument()) - inherited_handles.insert(reinterpret_cast(act->GetFD())); + inherited_handles.push_back(reinterpret_cast(act->GetFD())); } if (!inherited_handles.empty()) { - std::vector handles(inherited_handles.begin(), - inherited_handles.end()); if (!UpdateProcThreadAttribute( startupinfoex.lpAttributeList, /*dwFlags=*/0, - PROC_THREAD_ATTRIBUTE_HANDLE_LIST, handles.data(), - handles.size() * sizeof(HANDLE), + PROC_THREAD_ATTRIBUTE_HANDLE_LIST, inherited_handles.data(), + inherited_handles.size() * sizeof(HANDLE), /*lpPreviousValue=*/nullptr, /*lpReturnSize=*/nullptr)) { error = Status(::GetLastError(), eErrorTypeWin32); return HostProcess();