Subject: bug#407 closed by Stefan Monnier <[email-masked]> (gpm server stop making emacs abort())

From: [email-masked] (Emacs bug Tracking System)
Date: Fri, 27 Mar 2009 16:25:05 +0000

This is an automatic notification regarding your bug report
which was filed against the emacs package:

#407: gpm server stop making emacs abort()

It has been closed by Stefan Monnier <[email-masked]>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact Stefan Monnier <[email-masked]> by
replying to this email.

-- 
407: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=407
Emacs Bug Tracking System
Contact [email-masked] with problems

Subject: gpm server stop making emacs abort()
From: Stefan Monnier <[email-masked]>
To: [email-masked]
Date: Fri, 27 Mar 2009 12:18:19 -0400

Thanks Kevin for your patch.  I've tried it out and it seems to be fine,
so I installed it (at long last).
We're really relying too much on undocumented parts of the GPM API, tho.

        Stefan

>From [email-masked] Fri Jun 13 13:56:16 2008
From: Kevin Ryde <[email-masked]>
To: [email-masked]
Subject: gpm server stop making emacs abort()
Date: Sat, 14 Jun 2008 06:55:33 +1000

--=-=-=

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.

In GNU Emacs 23.0.60.1 (i586-pc-linux-gnu, GTK+ Version 2.12.10)
 of 2008-06-13 on blah.blah
configured using `configure  'CFLAGS=-O -g' '--prefix=/down/emacs/b/inst' '--with-x-toolkit=gtk''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_AU
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default-enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  gpm-mouse-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  global-auto-composition-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

--=-=-=
Content-Disposition: attachment; filename=bt.txt

#0  0xb76728c1 in kill () from /lib/libc.so.6
No symbol table info available.
#1  0x080fbd49 in abort () at /down/emacs/src/emacs.c:427
No locals.
#2  0x0819559a in wait_reading_process_output (time_limit=30, microsecs=0, 
    read_kbd=-1, do_display=1, wait_for_cell=137641241, wait_proc=0x0, 
    just_wait_proc=0) at /down/emacs/src/process.c:4634
	timeout_reduced_for_timers = 0
	channel = 1
	nfds = -1
	Available = {fds_bits = {160, 0 <repeats 31 times>}}
	Connecting = {fds_bits = {0 <repeats 32 times>}}
	check_connect = 0
	check_delay = 0
	no_avail = 0
	xerrno = 9
	proc = 0
	timeout = {tv_sec = 25, tv_usec = 696000}
	end_time = {tv_sec = 1213338499, tv_usec = 981053}
	wait_channel = -1
	got_some_input = 1
#3  0x08056db5 in sit_for (timeout=240, reading=1, do_display=1)
    at /down/emacs/src/dispnew.c:6618
	sec = 30
	usec = 0
#4  0x08107775 in read_char (commandflag=1, nmaps=2, maps=0xbf9e9a60, 
    prev_event=137641241, used_mouse_menu=0xbf9e9ae8, end_time=0x0)
    at /down/emacs/src/keyboard.c:2930
	tem0 = <value optimized out>
	delay_level = 4
	buffer_size = <value optimized out>
	c = 137641241
	local_getcjmp = {{__jmpbuf = {137641241, 138142696, 146700176, 
      -1080124904, 690995329, 887540718}, __mask_was_saved = 0, 
    __saved_mask = {__val = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 137667092, 1536, 
        3214842376, 135944962, 137667088, 0, 0, 0, 0, 0, 0, 0, 192, 
        4294967292, 137667088, 0, 137667088, 137667088, 3214842408, 135633649, 
        137667088, 192}}}}
	save_jump = {{__jmpbuf = {0, 0, 0, 0, 0, 0}, __mask_was_saved = 0, 
    __saved_mask = {__val = {0 <repeats 32 times>}}}}
	key_already_recorded = 0
	tem = 146700176
	save = <value optimized out>
	previous_echo_area_message = 137641241
	also_record = 137641241
	reread = 0
	polling_stopped_here = <value optimized out>
	orig_kboard = (struct kboard *) 0x8be7790
#5  0x0810a47a in read_key_sequence (keybuf=0xbf9e9bc4, bufsize=30, 
    prompt=137641241, dont_downcase_last=0, can_return_switch_frame=1, 
    fix_current_buffer=1) at /down/emacs/src/keyboard.c:9443
	interrupted_kboard = (KBOARD *) 0x8be7790
	key = 137706808
	used_mouse_menu = 0
	echo_local_start = 0
	last_real_key_start = 0
	keys_local_start = 0
	local_first_binding = 0
	from_string = 137641241
	count = 2
	t = 0
	echo_start = 0
	keys_start = 0
	nmaps = 2
	nmaps_allocated = 2
	defs = (Lisp_Object * volatile) 0xbf9e9a40
	submaps = (Lisp_Object * volatile) 0xbf9e9a60
	orig_local_map = 147392757
	orig_keymap = 137641241
	localized_local_map = 0
	first_binding = 0
	first_unbound = 31
	mock_input = 0
	fkey = {parent = 137948733, map = 137948733, start = 0, end = 0}
	keytran = {parent = 137634685, map = 137634685, start = 0, end = 0}
	indec = {parent = 137948797, map = 137948797, start = 0, end = 0}
	shift_translated = 0
	delayed_switch_frame = 137641241
	original_uppercase = 137800728
	original_uppercase_position = -1
	starting_buffer = (struct buffer *) 0x834a210
	fake_prefixed_keys = 137641241
#6  0x0810bff0 in command_loop_1 () at /down/emacs/src/keyboard.c:1651
	cmd = <value optimized out>
	lose = 137837243
	nonundocount = 0
	keybuf = {24, 56, 0 <repeats 18 times>, -1080124376, -1080124528, 0, 
  -1080164352, 137641241, 142934753, 138142696, 138142696, 138142712, 
  -1080124344}
	i = 2
	prev_modiff = 11
	prev_buffer = (struct buffer *) 0x834a210
	already_adjusted = 0
#7  0x0815edcb in internal_condition_case (bfun=0x810bd11 <command_loop_1>, 
    handlers=137684385, hfun=0x8106559 <cmd_error>)
    at /down/emacs/src/eval.c:1511
	val = <value optimized out>
	c = {tag = 137641241, val = 137641241, next = 0xbf9e9d70, gcpro = 0x0, 
  jmp = {{__jmpbuf = {138142696, 138142696, 138142712, -1080124104, 691576961, 
        1071307758}, __mask_was_saved = 0, __saved_mask = {__val = {1, 
          3214842728, 3077261132, 3078107488, 3086920636, 3214842752, 
          3078103028, 276967387, 3079470328, 8655230, 48, 3076832444, 
          3214843408, 3214843116, 3214843396, 3214843256, 135346508, 2, 
          3214843268, 3214843116, 0 <repeats 12 times>}}}}, backlist = 0x0, 
  handlerlist = 0x0, lisp_eval_depth = 0, pdlcount = 2, 
  poll_suppress_count = 1, interrupt_input_blocked = 0, byte_stack = 0x0}
	h = {handler = 137684385, var = 137641241, chosen_clause = 0, 
  tag = 0xbf9e9c70, next = 0x0}
#8  0x08105aa2 in command_loop_2 () at /down/emacs/src/keyboard.c:1367
	val = 0
#9  0x0815ee81 in internal_catch (tag=137680361, 
    func=0x8105a7f <command_loop_2>, arg=137641241)
    at /down/emacs/src/eval.c:1247
	c = {tag = 137680361, val = 137641241, next = 0x0, gcpro = 0x0, jmp = {
    {__jmpbuf = {138142696, 138142696, 138142712, -1080123848, 691716225, 
        1071442414}, __mask_was_saved = 0, __saved_mask = {__val = {0, 0, 0, 
          0, 0, 3077261489, 0, 0, 0, 0, 0, 0, 0, 0, 192, 3078107544, 1, 176, 
          22, 0, 137872602, 137869672, 137872600, 3214843432, 135602776, 
          137869673, 137872602, 137641241, 137667088, 137872602, 0, 
          137641265}}}}, backlist = 0x0, handlerlist = 0x0, 
  lisp_eval_depth = 0, pdlcount = 2, poll_suppress_count = 1, 
  interrupt_input_blocked = 0, byte_stack = 0x0}
#10 0x081063d6 in command_loop () at /down/emacs/src/keyboard.c:1346
No locals.
#11 0x081066eb in recursive_edit_1 () at /down/emacs/src/keyboard.c:955
	val = <value optimized out>
#12 0x08106812 in Frecursive_edit () at /down/emacs/src/keyboard.c:1017
	buffer = 137641241
#13 0x080fd61d in main (argc=2, argv=0xbf9ea244)
    at /down/emacs/src/emacs.c:1772
	dummy = 48
	stack_bottom_variable = 7 '\a'
	do_initial_setlocale = 1
	skip_args = 0
	rlim = {rlim_cur = 8388608, rlim_max = 18446744073709551615}
	no_loadup = 0
	junk = 0x0

--=-=-=--