Hi GDB maintainer,

In GDB, debugged process cannot continue execution after break
if it reads stdin.

With the following steps, cat is terminated with error.

1) Install coreutils-debuginfo package.
2) Run "gdb cat" in console (command prompt), not in mintty.
3) Enter "start" in gdb.
4) Enter "cont" in gdb.

This results in:
/usr/bin/cat: -: Input/output error

Both gdb-9.2-1 and gdb-10.1-1(TEST) have this problem.

I looked into this problem and found the cause is that the pgid
setting for /usr/bin/cat is lost after break. The following patch
for GDB source resolves the issue. In the following section,
winpid is passed to getpgid() rather than cygwin pid. Also, winpid
is passed to other POSIX system calls such as kill() elsewhere. 

--- inflow.c.orig       2020-05-24 06:10:29.000000000 +0900
+++ inflow.c    2021-01-23 17:48:27.963609500 +0900
@@ -364,11 +364,11 @@
 #ifdef HAVE_TERMIOS_H
          /* If we can't tell the inferior's actual process group,
             then restore whatever was the foreground pgrp the last
             time the inferior was running.  See also comments
             describing terminal_state::process_group.  */
-#ifdef HAVE_GETPGID
+#if defined (HAVE_GETPGID) && !defined (__CYGWIN__)
          result = tcsetpgrp (0, getpgid (inf->pid));
 #else
          result = tcsetpgrp (0, tinfo->process_group);
 #endif
          if (result == -1)


I hope the GDB maintainer will check it out.

Addresses: https://cygwin.com/pipermail/cygwin-patches/2021q1/011018.html

-- 
Takashi Yano <takashi.y...@nifty.ne.jp>
--
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to