From: Jerome Guitton <guitton@adacore.com>
To: gdb@sourceware.org
Subject: [mingw32] stdin redirection
Date: Wed, 11 Apr 2007 13:42:00 -0000 [thread overview]
Message-ID: <20070411134219.GA33609@adacore.com> (raw)
Hi all,
We noticed that a migw32-hosted GDB would freeze if commands are sent
through stdin (e.g. gdb < send.gdb).
It appears that it keeps waiting on WaitForMultipleObjects, in
gdb_select.
We also noticed that this bug only happens if a call to PeekNamedPipe
(in fd_is_pipe, in ser-mingw.c), with the file descriptor of stdin In
this particular case, this call always return 0; so we have added the
following kludge in our sources, to "fix" this issue:
Index: ser-mingw.c
===================================================================
RCS file: /cvs/src/src/gdb/ser-mingw.c,v
retrieving revision 1.8
diff -u -r1.8 ser-mingw.c
--- ser-mingw.c 8 Apr 2007 15:20:07 -0000 1.8
+++ ser-mingw.c 11 Apr 2007 12:58:04 -0000
@@ -447,6 +447,7 @@
static int
fd_is_pipe (int fd)
{
+ return 0;
if (PeekNamedPipe ((HANDLE) _get_osfhandle (fd), NULL, 0, NULL, NULL, NULL))
return 1;
else
...and, with this patch, the problem does not appear anymore.
So: apparently, using PeekNamedPipe on a fd which is not a pipe makes
the debugger freeze on WaitForMultipleObjects. Is it a known problem?
Would anyone know how to implement fd_is_pipe in such a way that we
would avoid this "limitation"? I have not seen anything promising in
the MSDN so far (the other functions to deal with pipes bring about
the same behavior).
Thanks,
Jérôme
next reply other threads:[~2007-04-11 13:42 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-04-11 13:42 Jerome Guitton [this message]
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
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=20070411134219.GA33609@adacore.com \
--to=guitton@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