Subject: Re: bug#407: gpm server stop making emacs abort()

From: Stefan Monnier <[email-masked]>
Date: Fri, 13 Jun 2008 18:18:32 -0400

> If running with
> 	(gpm-mouse-mode 1)
> and if you stop the gpm server, then emacs dies with
> 	Fatal error (6)Aborted
> Output from "bt full" below; xbacktrace printed nothing at all.

> The backtrace shows it at the abort() under the EBADF case in
> wait_reading_process_output().  I think when Gpm_GetEvent gets an eof
> from the server it closes gpm_fd; maybe that's the bad fd in question.

I can't test it right now.  Does the patch below help?

        Stefan

--- keyboard.c.~1.959.~	2008-06-03 02:14:30.000000000 -0400
+++ keyboard.c	2008-06-13 18:17:35.000000000 -0400
@@ -7189,6 +7189,8 @@
       while (gpm = Gpm_GetEvent (&event), gpm == 1) {
 	  nread += handle_one_term_event (tty, &event, &hold_quit);
       }
+      if (gpm < 0)
+	delete_gpm_wait_descriptor (gpm_fd);
       if (hold_quit.kind != NO_EVENT)
 	  kbd_buffer_store_event (&hold_quit);
       if (nread)