Subject: Re: bug#10933: Acknowledgement (24.0.94; No output shown in *input/output* buffer of M-x gdb not working after first run)

From: Troels Nielsen <[email-masked]>
Date: Fri, 23 Mar 2012 13:50:12 +0100

Stefan Monnier writes:
 > > I think this bug is due to gdb-mi creating a pty which it expects to
 > > remain open. When the process being debugged disconnects, emacs will
 > > receive an EIO-errno and (I believe mistakenly) send a SIGCHLD to
 > > itself, and stop listening to the pty.
 > 
 > > This patch fixes the problem for me.

 > Thanks, I don't understand what is special about gdb-mi that it's
 > the only one to trigger this problem, and I suspect there's a
 > slightly cleaner fix (as the above comment mentions, we only send
 > ourselves a SIGCHLD to work around problems we don't understand in
 > some undescribed situations, which may even be situations that
 > don't exist any more nowadays for all I know).

I think the problems mentioned in the comments are due to SIGCHLD
sometimes getting lost on certain unices, when two children or more
exit (or maybe generally when many signals are sent) simultaneously.

I believe (but may be mistaken :) ) that it is only relevant when
emacs itself is responsible for parenting the process. In this case
however gdb-mi is only creating a pty (using create_pty in process.c),
which gdb is instructed to connect the debugged process to. So gdb is
the parent and emacs should probably not care too much if the
debugged process dies.

Troels