<div dir="ltr">Sorry, hit enter too soon.  I have been thinking about next steps for fixing this in the longer term.  I think the way to go is that on Windows, ConnectionFileDescriptor shouldn't even use select at all, nor should it use the command pipe.  The purpose of the command pipe seems to be so that various interrupt commands can be sent to interrupt the select, and then terminate the connection or something else so that it doesn't block forever.<div>
<br></div><div>On Windows, the closest equivalent to select is WaitForMultipleObjects.  So I think on Windows we need to switch to using WFMO instead of select().  The command pipe will be replaced by various event objects, which the user will set according to which interruption command they want to send.  WFMO doesn't accept sockets though, so we need to call WSAEventSelect() to get an event handle corresponding to read/write operations on the socket.</div>
<div><br></div><div>There's numerous other portability issues with this class currently, most notably that select() on windows doesn't set errno</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
On Thu, Aug 7, 2014 at 1:34 PM, Zachary Turner <span dir="ltr"><<a href="mailto:zturner@google.com" target="_blank">zturner@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr">This is a known issue.  But I don't think this is a regression.  It's just always been this way.  Basically on Windows, select() only deals with sockets.  It doesn't work with pipes, files, or anything else.  In other words, ConnectionFileDescriptor is just fundamentally broken on Windows.  I recently pushed a large refactor to the socket logic in ConnectionFileDescriptor which is aimed at addressing this.  But it's only one step of what I think will be a long process to get ConnectionFileDescriptor working on Windows.</div>
<div class="HOEnZb"><div class="h5">
<div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 7, 2014 at 1:01 PM, Deepak Panickal <span dir="ltr"><<a href="mailto:deepak@codeplay.com" target="_blank">deepak@codeplay.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I have been seeing an issue with the refactored pipe support changes on Windows using _pipe().<br>
<br>
This is specifically at the ::select function in ConnectionFileDescriptor::BytesAvailable().<br>
On Windows, the ::select fails if the pipe file descriptor is also included and so the connection fails.<br>
<br>
<a href="http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ConnectionFileDescriptor.cpp?view=markup" target="_blank">http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Core/ConnectionFileDescriptor.cpp?view=markup</a><br>


<br>
Wanted to ask if anybody else on Windows is seeing any such issue?<br>
<br>
Thanks,<br>
Deepak<br>
<br>
<br>
_______________________________________________<br>
lldb-dev mailing list<br>
<a href="mailto:lldb-dev@cs.uiuc.edu" target="_blank">lldb-dev@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev</a><br>
</blockquote></div><br></div>
</div></div></blockquote></div><br></div>