Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: Joel Brobecker <brobecker@adacore.com>
Cc: gdb@sourceware.org
Subject: Re: [mingw32] stdin redirection
Date: Thu, 12 Apr 2007 15:12:00 -0000	[thread overview]
Message-ID: <20070412151221.GA856@caradoc.them.org> (raw)
In-Reply-To: <20070412145818.GG3886@adacore.com>

On Thu, Apr 12, 2007 at 04:58:18PM +0200, Joel Brobecker wrote:
> > Otherwise, see the call site, where no handle is provided.
> > So we must be falling back to the file handle (mingw-hdep.c).
> > Maybe we need to do something different to simulate select on a file.
> 
> Sorry, we're not sure what you mean. Could you elaborate?

For a pipe, we use PeekNamedPipe to figure out how many bytes are
available in the pipe and whether select on the pipe should return.
For a file, we use the fallback case: we pass the file's HANDLE to
WaitForMultipleObjects.  What does a file HANDLE do when waited on?
Maybe it's not the useful behavior.

> If we could find a way to replace the current implementation of
> fd_is_pipe into something that avoids using any of the pipe functions,
> then that would probably solve our problem. Unfortunately, despite
> our intensive search of MSDN, nothing turned up.

To the best of my knowledge there is no way.

> However, the little hack we have been using in fd_is_pipe (basically
> always return false) seems to indicate that it is OK to treat the
> case of pipes and files the same way.

I don't believe this.  When you wait for a pipe's handle, it returns
that the handle is signalling if it is valid to connect to the pipe.
This condition has nothing to do with whether we can read from the
pipe.

Are you sure that you tested any case in which fd_is_pipe returned
true?  I don't remember exactly what the failure mode was, but it's
not immediately obvious; we decide there is data available, try to
read it, and either block in read or fail to read unexpectedly.  So
we run around in readline when we should be sleeping.  Remote
debugging is most likely to show this problem, especially "target
remote |" if you have any stubs that talk on stdio.

-- 
Daniel Jacobowitz
CodeSourcery


  parent reply	other threads:[~2007-04-12 15:12 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-11 13:42 Jerome Guitton
2007-04-11 14:45 ` Daniel Jacobowitz
2007-04-11 14:51   ` Jerome Guitton
2007-04-11 15:12     ` Daniel Jacobowitz
2007-04-12 14:56       ` Joel Brobecker
2007-04-12 15:01         ` Dave Korn
2007-04-12 15:04         ` Dave Korn
     [not found]           ` <20070412155422.GI3886@adacore.com>
2007-04-12 15:58             ` Dave Korn
2007-04-12 16:06               ` Joel Brobecker
2007-04-12 16:09                 ` Dave Korn
2007-04-12 15:12         ` Daniel Jacobowitz [this message]
2007-04-12 15:51           ` Joel Brobecker
2007-04-12 16:02             ` Daniel Jacobowitz
2007-04-12 16:04             ` Daniel Jacobowitz
2007-04-12 16:29               ` Joel Brobecker
2007-04-12 18:23                 ` Daniel Jacobowitz
2007-04-12 18:56                   ` Daniel Jacobowitz
2007-04-13  9:07                     ` Joel Brobecker
2007-04-12 16:46           ` Joel Brobecker
2007-04-12 17:25             ` Dave Korn
2007-04-13 11:47               ` Jerome Guitton
2007-04-12 19:33             ` Eli Zaretskii
2007-04-12 19:37               ` Mark Kettenis
2007-04-12 19:51               ` Daniel Jacobowitz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070412151221.GA856@caradoc.them.org \
    --to=drow@false.org \
    --cc=brobecker@adacore.com \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox