[14479] in Athena Bugs
Re: sun4 8.0F: emacs
daemon@ATHENA.MIT.EDU (Greg Hudson)
Sun Jul 21 14:14:09 1996
Date: Sun, 21 Jul 1996 14:14:04 -0400
From: Greg Hudson <ghudson@MIT.EDU>
To: Greg Hudson <ghudson@MIT.EDU>
Cc: David K Krikorian <dkk@MIT.EDU>, ghudson@MIT.EDU, bugs@MIT.EDU
In-Reply-To: "[14476] in Athena Bugs"
> I suppose I could try reproducing the problem using the old hilit19
> and find out more about what caused it then; maybe I'll do that.
Okay, doing that, I've partially analyzed the problem:
What's going on here is that something about the window state is
causing emacs's redisplay() function to generate an error. The
redisplay is taking place as part of command_loop_1(); the error is
caught by command_loop_2() (which is a wrapper around command_loop_1()
to catch errors) which promptly restarts command_loop_1(), generating
the error again.
Unfortunately, the redisplay code is horribly complicated and I don't
have the energy to understand it right now. At the end of this
message I've included a stack trace from the time of the redisplay()
error (simple to reproduce: xset b off, start emacs, set scroll-step
to 1, load the hilit19 shipped with emacs 19.30--not the one on the
8.0 packs--go into info mode, ^C when emacs hangs for a while, break
longjmp, and continue).
Since this problem is so serious and still occurs under some
circumstances, I would like to introduce a workaround if I'm unable to
come up with a fix. One possible workaround is to go into the
error-handling routine and prevent it from beeping more than once
between successful iterations of command_loop_1(). Since
command_loop_1() will process keystrokes before doing the redisplay,
users can then get out of the infinite loop by switching buffers or
something.
I will also check the emacs 19.31 change logs and look for a fix for
this problem.
#0 0x6fe16cf8 in longjmp ()
#1 0x11284c in unwind_to_catch (catch=0xeffff428, value=1346358156)
at eval.c:953
#2 0x1130d0 in Fsignal (error_symbol=271089064, data=1346358148)
at eval.c:1227
#3 0xfde58 in args_out_of_range (a1=1, a2=1) at data.c:127
#4 0xc4950 in validate_interval_range (object=1077198848, begin=0xefffea0c,
end=0xefffea0c, force=0) at textprop.c:136
#5 0xc67c8 in Fnext_property_change (pos=1, object=1077198848,
limit=271088684) at textprop.c:626
#6 0xdf164 in compute_motion (from=1, fromvpos=0, fromhpos=0, did_motion=0,
to=6616, tovpos=1, tohpos=-1073741824, width=79, hscroll=0, tab_offset=0,
win=0x30de00) at indent.c:727
#7 0xe0b3c in vmotion (from=1, vtarget=1, w=0x30de00) at indent.c:1210
#8 0x521f0 in redisplay_window (window=1076944384, just_this_one=0)
at xdisp.c:1689
#9 0x510ec in redisplay_windows (window=1076944384) at xdisp.c:1352
#10 0x50578 in redisplay () at xdisp.c:1045
#11 0x50b40 in redisplay_preserve_echo_area () at xdisp.c:1214
#12 0x8dbfc in x_handle_selection_clear (event=0xefffeee8) at xselect.c:801
#13 0x9a84c in kbd_buffer_get_event (kbp=0xefffefa4,
used_mouse_menu=0xeffff1e4) at keyboard.c:2655
#14 0x98d94 in read_char (commandflag=1, nmaps=2, maps=0xeffff110,
prev_event=271088644, used_mouse_menu=0xeffff1e4) at keyboard.c:2012
#15 0xa08b8 in read_key_sequence (keybuf=0xeffff318, bufsize=30,
prompt=271088644, dont_downcase_last=0, can_return_switch_frame=1)
at keyboard.c:5664
#16 0x96964 in command_loop_1 () at keyboard.c:1192
#17 0x112db8 in internal_condition_case (bfun=0x96568 <command_loop_1>,
handlers=271089004, hfun=0x95da4 <cmd_error>) at eval.c:1116
#18 0x96370 in command_loop_2 () at keyboard.c:1021
#19 0x112740 in internal_catch (tag=271088984, func=0x9634c <command_loop_2>,
arg=271088644) at eval.c:901
#20 0x96318 in command_loop () at keyboard.c:1001
#21 0x95ad4 in recursive_edit_1 () at keyboard.c:737
#22 0x95c44 in Frecursive_edit () at keyboard.c:779
#23 0x94474 in main (argc=3, argv=0xeffff834, envp=0xeffff844) at emacs.c:942