If I connect to a running xemacs (21.0b42) with 'gnuclient -nw' and
then I kill the xterm gnuclient is running in, xemacs
quits with the following dump. It does not actually produce
a core (contrary to what it says). I'm not sure why xemacs dies
but it is triggered by the SIGHUP gnuclient passes on. Things
work as I expect if I apply the following patch to uncatch SIGHUP
allowing gnuclient to take the SIGHUP for the team. I'm not sure
if this is the right fix.
On a related note, is it possible for 'xemacs -nw' to pass control
to a gnuclient in the event it (the xemacs) receives a SIGHUP so that
the gnuclient term/window becomes the "controlling" one and wont die
when the xemacs does. This seems to happen to me all the time
when my modem disconnects me: I really quickly connect back up
and gnuclient over to the "about to get a SIGHUP" xemacs and
continue right where I left off. The only problem is that
within the a minute the SIGHUP comes and knocks us both out.
Thanks,
-Jim
Index: gnuclient.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs-20/lib-src/gnuclient.c,v
retrieving revision 1.15
diff -u -r1.15 gnuclient.c
--- gnuclient.c 1998/05/24 05:40:19 1.15
+++ gnuclient.c 1998/06/12 08:41:16
@@ -123,7 +123,6 @@
We used to send SIGSEGV, SIGBUS, SIGPIPE, SIGILL and others to
Emacs, but I think it's better not to. I can see no reason why
Emacs should SIGSEGV whenever gnuclient SIGSEGV-s, etc. */
- signal (SIGHUP, pass_signal_to_emacs);
signal (SIGQUIT, pass_signal_to_emacs);
signal (SIGINT, pass_signal_to_emacs);
#ifdef SIGWINCH
# (condition-case ... . error)
# (unwind-protect ...)
read-minibuffer-internal("Buffer t.c modified; kill anyway? (yes or no) ")
byte-code("..." [recursion-depth minibuffer-depth t standard-input standard-ou
tput read-minibuffer-internal prompt] 2)
# (catch exit ...)
# bind (mouse-grabbed-buffer current-prefix-arg help-form minibuffer-history-v
ariable minibuffer-history-position minibuffer-scroll-window)
# (unwind-protect ...)
# bind (_history_ oconfig mconfig frame buffer window oframe owindow dir abbre
v-table history readp keymap initial-contents prompt)
read-from-minibuffer("Buffer t.c modified; kill anyway? (yes or no) " nil #<ke
ymap minibuffer-local-map 14 entries 0x51a> nil t)
# bind (minibuffer-completion-table history initial-contents prompt)
read-string("Buffer t.c modified; kill anyway? (yes or no) " nil t)
# bind (p ans)
# (unwind-protect ...)
# bind (prompt)
yes-or-no-p-minibuf("Buffer t.c modified; kill anyway? ")
# bind (prompt)
yes-or-no-p("Buffer t.c modified; kill anyway? ")
kill-buffer(#<buffer "t.c">)
# (unwind-protect ...)
# bind (buffer)
gnuserv-buffer-done-1(#<buffer "t.c">)
mapc(gnuserv-buffer-done-1 (#<buffer "t.c">))
# bind (leave-frame client)
gnuserv-kill-client([cl-struct-gnuclient 7 (#<buffer "t.c">) #<tty-device on "
/dev/ttyp0" 0xb03> #<tty-frame "emacs" 0xb35>] t)
# bind (--dolist-temp--57512 client device)
gnuserv-check-device(#<tty-device on "/dev/ttyp0" 0xb03>)
# (condition-case ... . error)
# (catch top-level ...)
Hangup