[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: custom mode-line face makes Emacs freeze up
From: |
Stephen Berman |
Subject: |
Re: custom mode-line face makes Emacs freeze up |
Date: |
Wed, 27 Oct 2004 23:56:54 +0200 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/21.3.50 (gnu/linux) |
On Wed, 27 Oct 2004 06:48:34 -0400 Richard Stallman <address@hidden> wrote:
> So far the freeze has happened with every pair of files I've tried
> with Ediff. I've noticed two additional data points:
>
> Please specify ONE specific pair of files that fails.
> That is far more useful than what you're doing, which is
> trying to describe the envelope of failure in general terms.
> The latter is not very useful.
Here's a specific pair: Type `C-x C-f test1', `test1', `C-x C-s', `C-x
C-f test2', `test2', `C-x C-s'. Now customize mode-line face as
described previously (width=narrow, height=120, overline=on), then
invoke Ediff on test1 and test2. Now Emacs goes into an infinite loop
for me.
> Your info about the bounds of the loop is useful.
> It is really strange that it returns 1 after starting
> redisplay from point. If you can find out things like
> what value move_it_vertically_backward found
> (it is in `it'), that might shed light on the problem.
I'm not experienced at debugging Emacs C code, so if the following is
irrelevant, please tell me what to do. At the point in the program
execution where the loop begins, I started stepping through the
program. This went on for many lines without getting to
move_it_vertically_backward, so I started using `next'. This also
went on for many lines, until suddenly `next' failed to return. Then
I typed `C-z' and printed the value of `it'; here it is, with the
lines preceding the failed return:
(gdb) next
2265 it->start = it->current;
(gdb) next
2268 reseat (it, it->current.pos, 1);
(gdb) next
2265 it->start = it->current;
(gdb) next
2268 reseat (it, it->current.pos, 1);
(gdb) next
Program received signal SIGTSTP, Stopped (user).
redisplay_window (window=141912204, just_this_one_p=0) at xdisp.c:12021
12021 move_it_vertically_backward (&it, centering_position);
(gdb) p it
$26 = {window = 141912204, w = 0x8756888, f = 0x89a8510,
method = 0x809a620 <next_element_from_buffer>, stop_charpos = 16,
end_charpos = 16, s = 0x0, string_nchars = 0, region_beg_charpos = -1,
region_end_charpos = -1, redisplay_end_trigger_charpos = 0, multibyte_p = 1,
header_line_p = 0, string_from_display_prop_p = 0, dp = 0x8538690,
dpvec = 0x0, dpend = 0x0, dpvec_char_len = 0, saved_face_id = 0,
ctl_chars = {0 <repeats 16 times>}, start = {pos = {charpos = 1,
bytepos = 1}, overlay_string_index = -1, string_pos = {charpos = -1,
bytepos = -1}, dpvec_index = -1}, current = {pos = {charpos = 1,
bytepos = 1}, overlay_string_index = -1, string_pos = {charpos = -1,
bytepos = -1}, dpvec_index = -1}, overlay_strings = {0, 0, 0},
n_overlay_strings = 0, string = 137615065, stack = {{stop_charpos = 0,
face_id = 0, string = 0, pos = {pos = {charpos = 0, bytepos = 0},
overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0},
dpvec_index = 0}, end_charpos = 0, string_nchars = 0,
area = LEFT_MARGIN_AREA, multibyte_p = 0,
string_from_display_prop_p = 0, display_ellipsis_p = 0, slice = {x = 0,
y = 0, width = 0, height = 0}, space_width = 0, voffset = 0,
font_height = 0}, {stop_charpos = 0, face_id = 0, string = 0, pos = {
pos = {charpos = 0, bytepos = 0}, overlay_string_index = 0,
string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0},
end_charpos = 0, string_nchars = 0, area = LEFT_MARGIN_AREA,
multibyte_p = 0, string_from_display_prop_p = 0, display_ellipsis_p = 0,
slice = {x = 0, y = 0, width = 0, height = 0}, space_width = 0,
voffset = 0, font_height = 0}}, sp = 0,
selective_display_ellipsis_p = 1, ctl_arrow_p = 1, selective = 0,
what = IT_CHARACTER, face_id = 0, face_box_p = 0, start_of_box_run_p = 0,
end_of_box_run_p = 0, overlay_strings_at_end_processed_p = 0,
glyph_not_available_p = 0, starts_in_middle_of_char_p = 0,
face_before_selective_p = 0, constrain_row_ascent_descent_p = 0,
base_face_id = 0, c = 0, len = 0, cmp_id = 0, cmp_len = 0,
char_to_display = 0, image_id = 0, slice = {x = 137615065, y = 137615065,
width = 137615065, height = 137615065}, space_width = 137615065,
voffset = 0, font_height = 137615065, object = 141405076, position = {
charpos = 1, bytepos = 1}, truncate_lines_p = 0, tab_width = 8,
truncation_pixel_width = 0, continuation_pixel_width = 0,
first_visible_x = 0, last_visible_x = 119, last_visible_y = 11,
extra_line_spacing = 0, override_ascent = -1, override_descent = 0,
override_boff = 0, glyph_row = 0x0, area = TEXT_AREA, nglyphs = 0,
pixel_width = 0, ascent = 0, descent = 0, max_ascent = 0, max_descent = 0,
phys_ascent = 0, phys_descent = 0, max_phys_ascent = 0,
max_phys_descent = 0, current_x = 0, continuation_lines_width = 0,
current_y = 0, first_vpos = 0, vpos = 0, hpos = 0,
left_user_fringe_bitmap = 0, right_user_fringe_bitmap = 0,
left_user_fringe_face_id = 0, right_user_fringe_face_id = 0}
> However, it would be really good for us to be able to
> make it fail.
I hope you can!