amccarth marked an inline comment as done.
amccarth added a comment.

Thanks for the review.

In D60152#1452704 <https://reviews.llvm.org/D60152#1452704>, @labath wrote:

> FTR, I believe using pipes here is wrong altogether because it can lead to 
> deadlock. The size of the pipe buffer is implementation-defined, and since 
> there's noone reading from it while we write it, we can block indefinitely if 
> we encounter a particularly long sequence of -o commands. I guess the fact 
> that we haven't hit this in practice means that the implementation-defined 
> size is sufficiently big on all OSs we care about.


Agreed, pipes probably aren't the right way, but this was just a drive-by 
cleanup.  On Windows, the necessary size is passed to the `_pipe` call, so if 
we have an unusually large buffer of commands it should either work or fail 
gracefully rather than deadlocking.



================
Comment at: lldb/tools/driver/Driver.cpp:492-496
 #ifdef _WIN32
-      _close(fds[WRITE]);
-      fds[WRITE] = -1;
+      _close(fd);
 #else
-      close(fds[WRITE]);
-      fds[WRITE] = -1;
+      close(fd);
 #endif
----------------
labath wrote:
> Do you think it would be possible to use 
> `llvm::Process::SafelyCloseFileDescriptor` here? It looks like that still 
> uses close (without the `_`) on windows, which we are trying hard to avoid 
> here, but I'm not sure why. I know close is technically deprecated on 
> windows, but AFAIK the only thing deprecated about it is the name, and 
> otherwise it works correctly.
> 
> (If that works, I'd even consider removing this function entirely, as the 
> only thing it does extra is clear the fd, but that does not seem necessary 
> since we're now calling it immediately before we return (and the fds go out 
> of scope anyway)).
I'm happy to use `llvm::sys::Process::SafelyCloseFileDescriptor` and delete my 
little wrapper.  I agree that resetting the df to -1 right before it goes out 
of scope isn't useful.  I'll update the patch momentarily.

If we're not that worried about the deprecated names on Windows, should I also 
just use `fdopen` and forget about wrapping that as well?

Either way, I'm going to keep the OpenPipe wrapper since the Windows version 
takes additional parameters.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D60152/new/

https://reviews.llvm.org/D60152



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to