Document GTK Emacs kill on display close in PROBLEMS.
authorChong Yidong <cyd@stupidchicken.com>
Mon, 25 Oct 2010 16:08:27 +0000 (12:08 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Mon, 25 Oct 2010 16:08:27 +0000 (12:08 -0400)
* src/xterm.c (x_connection_closed): Expand comment.

etc/PROBLEMS
src/xterm.c

index fb1b2b3..6fd959b 100644 (file)
@@ -241,19 +241,18 @@ necessary but missing, please report it via M-x report-emacs-bug.
 On platforms such as Solaris, you can also work around this problem by
 configuring your compiler to use the native linker instead of GNU ld.
 
-** Emacs compiled with Gtk+ crashes when closing a display (x-close-connection).
+** When Emacs is compiled with Gtk+, closing a display kills Emacs.
 
-This happens because of bugs in Gtk+.  Gtk+ 2.10 seems to be OK.  See bug
-http://bugzilla.gnome.org/show_bug.cgi?id=85715.
+There is a long-standing bug in GTK that prevents it from recovering
+from disconnects: http://bugzilla.gnome.org/show_bug.cgi?id=85715.
 
-** Emacs compiled with Gtk+ may loop forever if a display crashes.
+Thus, for instance, when Emacs is run as a server on a text terminal,
+and an X frame is created, and the X server for that frame crashes or
+exits unexpectedly, Emacs must exit to prevent a GTK error that would
+result in an endless loop.
 
-This is related to the bug above.  A scenario for this is when emacs is run
-as a server, and an X frame is created.  If the X server for the frame
-crashes or exits unexpectedly and an attempt is made to create a new
-frame on another X display, then a Gtk+ error happens in the emacs
-server that results in an endless loop.  This is not fixed in any known
-Gtk+ version (2.14.4 being current).
+If you need Emacs to be able to recover from closing displays, compile
+it with the Lucid toolkit instead of GTK.
 
 * General runtime problems
 
index 1de49e2..1435002 100644 (file)
@@ -7911,7 +7911,13 @@ x_connection_closed (dpy, error_message)
 #endif
 
 #ifdef USE_GTK
-      /* Due to bugs in some Gtk+ versions, just exit here. */
+      /* There is a long-standing bug in GTK that prevents the GTK
+        main loop from recovering gracefully from disconnects
+        (https://bugzilla.gnome.org/show_bug.cgi?id=85715).  Among
+        other problems, this gives rise to a stream of Glib error
+        messages that, in one incident, filled up a user's hard disk
+        (http://lists.gnu.org/archive/html/emacs-devel/2010-10/msg00927.html).
+        So, kill Emacs unconditionally if the display is closed.  */
       {
        fprintf (stderr, "%s\n", error_msg);
        Fkill_emacs (make_number (70));