Discussion:
GDB: error detected on stdin
Vikash Jain
2011-05-24 13:26:48 UTC
Permalink
Hi All,

I'm trying to pipe commands to gdb but I get the following messages.
Will it cause any problems? How do i resolve the same?

(gdb) Hangup detected on fd 0
error detected on stdin

Python Script
============
#!/usr/local/bin/python
import subprocess

proc=subprocess.Popen('gdb',shell=True,stdin=su
bprocess.PIPE,stdout=subprocess.PIPE,executable="/usr/local/bin/bash")
proc.stdin.write('help')
output=proc.communicate()[0]
print output

Script Log
==========
[***@test ~/CAT/example]$ python -u main.py
GNU gdb (GDB) 7.2.50.20110328-cvs
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i386-unknown-freebsd6.3".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) Hangup detected on fd 0
error detected on stdin

Best Regards
Vikash Jain
Andreas Schwab
2011-05-24 14:31:42 UTC
Permalink
Post by Vikash Jain
I'm trying to pipe commands to gdb but I get the following messages.
Will it cause any problems? How do i resolve the same?
2011-05-24 Andreas Schwab <***@redhat.com>

* event-loop.c (handle_file_event): Don't handle POLLHUP as error.

--- event-loop.c.~1.49.~ 2011-03-22 11:59:52.000000000 +0100
+++ event-loop.c 2011-05-24 16:27:28.614311098 +0200
@@ -759,7 +759,6 @@ handle_file_event (event_data data)
int mask;
#ifdef HAVE_POLL
int error_mask;
- int error_mask_returned;
#endif
int event_file_desc = data.integer;

@@ -783,22 +782,19 @@ handle_file_event (event_data data)
if (use_poll)
{
#ifdef HAVE_POLL
+ /* POLLHUP means EOF, but can be combined with POLLIN to
+ signal more data to read. */
error_mask = POLLHUP | POLLERR | POLLNVAL;
- mask = (file_ptr->ready_mask & file_ptr->mask) |
- (file_ptr->ready_mask & error_mask);
- error_mask_returned = mask & error_mask;
+ mask = file_ptr->ready_mask & (file_ptr->mask | error_mask);

- if (error_mask_returned != 0)
+ if ((mask & (POLLERR | POLLNVAL)) != 0)
{
/* Work in progress. We may need to tell somebody
what kind of error we had. */
- if (error_mask_returned & POLLHUP)
- printf_unfiltered (_("Hangup detected on fd %d\n"),
- file_ptr->fd);
- if (error_mask_returned & POLLERR)
+ if (mask & POLLERR)
printf_unfiltered (_("Error detected on fd %d\n"),
file_ptr->fd);
- if (error_mask_returned & POLLNVAL)
+ if (mask & POLLNVAL)
printf_unfiltered (_("Invalid or non-`poll'able fd %d\n"),
file_ptr->fd);
file_ptr->error = 1;

Andreas.
--
Andreas Schwab, ***@redhat.com
GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E
"And now for something completely different."
Tom Tromey
2011-05-24 19:14:18 UTC
Permalink
Andreas> 2011-05-24 Andreas Schwab <***@redhat.com>
Andreas> * event-loop.c (handle_file_event): Don't handle POLLHUP as error.

This is ok. IIRC this fixes some PR as well.

Tom
Andreas Schwab
2011-05-25 07:59:13 UTC
Permalink
Post by Tom Tromey
Andreas> * event-loop.c (handle_file_event): Don't handle POLLHUP as error.
This is ok. IIRC this fixes some PR as well.
Yep, it's 8677.

Andreas.
--
Andreas Schwab, ***@redhat.com
GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84 5EC7 45C6 250E 6F00 984E
"And now for something completely different."
Vikash Jain
2011-05-25 08:09:45 UTC
Permalink
Thanks a lot, fix worked for me.
Post by Andreas Schwab
Andreas>      * event-loop.c (handle_file_event): Don't handle POLLHUP as error.
This is ok.  IIRC this fixes some PR as well.
Yep, it's 8677.
Andreas.
--
GPG Key fingerprint = D4E8 DBE3 3813 BB5D FA84  5EC7 45C6 250E 6F00 984E
"And now for something completely different."
Loading...