================
@@ -96,7 +115,7 @@ Expected<std::optional<Message>> Transport::Read() {
     return createStringError(
         formatv("invalid content length {0}", *raw_length).str());
 
-  Expected<std::string> raw_json = ReadFull(*input, length);
----------------
ashgti wrote:

> I don't know if this helps you (since you still have to use a dedicated API 
> instead of `select(2)`), but `lldb_private::Pipe` works around this by 
> creating a named pipe with an random name (from what I've read, that's 
> actually how windows implements anonymous pipes internally).

The trouble is that when we run the debugger as an 
[DebugAdapterExecutable](https://code.visualstudio.com/api/references/vscode-api#DebugAdapterExecutable)
 the input stream is `stdin`. Unless we want to make Windows always use a local 
socket 
[DebugAdapterServer](https://code.visualstudio.com/api/references/vscode-api#DebugAdapterServer)
 or named pipes 
[DebugAdapterNamedPipeServer](https://code.visualstudio.com/api/references/vscode-api#DebugAdapterNamedPipeServer)
 we'd need to have some other mechanism for supporting reading with a timeout 
on Windows.

But I'm also not sure if that actually matters. VSCode never closes stdin, so 
it never gets an EOF. When the debug session ends, it sends a `kill -15` 
https://github.com/microsoft/vscode/blob/main/src/vs/workbench/contrib/debug/node/debugAdapter.ts#L290-L303
   so I'm not sure if we need to ensure the Transport returns, but we do have 
an existing test that we shutdown after the `disconnect` request is sent.

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

Reply via email to