Jan Vroonhof <vroonhof(a)math.ethz.ch> writes:
If I recall correctly there have been similar problems on AIX.
Not sure. Does anybody every use tooltalk nowadays? Workshop now uses
this eserve stuff which is completely different isn't it?
yes, but I think eserve still depends on tooltalk (somehow), could be
wrong though.
anyway here's a patch. I think on all platforms that have tooltalk
POSIX signals are supported, so this should be ok on all of them.
1999-07-03 Gunnar Evermann <ge204(a)eng.cam.ac.uk>
* tooltalk.c (init_tooltalk): save signal actions for SIGQUIT,
SIGINT and SIGCHLD before calling tt_open and restore the
afterwards. This fixes e.g. the zombie subprocesses on Solaris
Index: src/tooltalk.c
===================================================================
RCS file: /usr/CVSroot/XEmacs/xemacs/src/tooltalk.c,v
retrieving revision 1.13.2.2
diff -u -r1.13.2.2 tooltalk.c
--- tooltalk.c 1999/04/22 07:27:29 1.13.2.2
+++ tooltalk.c 1999/07/05 10:17:40
@@ -1256,7 +1256,28 @@
Lisp_Object lp;
Lisp_Object fil;
+
+ /* tt_open() messes with our signal handler flags (at least when no
+ ttsessions is running on the machine), therefore we save the
+ actions and restore them after the call */
+#ifdef HAVE_SIGPROCMASK
+ {
+ struct sigaction ActSIGQUIT;
+ struct sigaction ActSIGINT;
+ struct sigaction ActSIGCHLD;
+ sigaction (SIGQUIT, NULL, &ActSIGQUIT);
+ sigaction (SIGINT, NULL, &ActSIGINT);
+ sigaction (SIGCHLD, NULL, &ActSIGCHLD);
+#endif
retval = tt_open ();
+#ifdef HAVE_SIGPROCMASK
+ sigaction (SIGQUIT, &ActSIGQUIT, NULL);
+ sigaction (SIGINT, &ActSIGINT, NULL);
+ sigaction (SIGCHLD, &ActSIGCHLD, NULL);
+ }
+#endif
+
+
if (tt_ptr_error (retval) != TT_OK)
return;
--
Gunnar Evermann
Speech, Vision & Robotics Group
Engineering Department
Cambridge University