bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#1101: marked as done (Looping in redisplay due to font problem)


From: Emacs bug Tracking System
Subject: bug#1101: marked as done (Looping in redisplay due to font problem)
Date: Thu, 9 Oct 2008 09:50:05 -0700

Your message dated Thu, 09 Oct 2008 12:45:45 -0400
with message-id <873aj5lnt2.fsf@cyd.mit.edu>
and subject line Re: Looping in redisplay due to font problem
has caused the Emacs bug report #1070,
regarding Looping in redisplay due to font problem
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact don@donarmstrong.com
immediately.)


-- 
1070: http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=1070
Emacs Bug Tracking System
Contact don@donarmstrong.com with problems
--- Begin Message --- Subject: Re: Looping in redisplay due to font problem Date: Mon, 06 Oct 2008 12:37:09 -0400 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)
Kenichi Handa <handa@m17n.org> writes:

>> #0  0x00007f54662e1433 in select () from /lib/libc.so.6
>> #1  0x00007f546403b2b6 in ?? () from /usr/lib/libxcb.so.1
>> #2  0x00007f546403b8eb in ?? () from /usr/lib/libxcb.so.1
>> #3  0x00007f546403c050 in xcb_send_request () from /usr/lib/libxcb.so.1
>> #4  0x00007f5466e71f1a in _XPutXCBBuffer () from /usr/lib/libX11.so.6
>> #5  0x00007f5466e72267 in ?? () from /usr/lib/libX11.so.6
>> #6  0x00007f54650be5a3 in XRenderFillRectangle () from 
>> /usr/lib/libXrender.so.1
>
> Does Emacs always stop at that place when you repeat "cont"
> and "stop"?

Yes, it always seems to stop at this place.  Here's `bt full' and a
debugging session.  I don't see anything wrong OTOH, and am unsure about
what to look for.  Stepping forward in gdb doesn't work because the
program is stopped inside `select'.  Any suggestions?

#0  0x00007f6dd0fe5433 in select () from /lib/libc.so.6
#1  0x00007f6dcf0422b6 in ?? () from /usr/lib/libxcb.so.1
#2  0x00007f6dcf0428eb in ?? () from /usr/lib/libxcb.so.1
#3  0x00007f6dcf043050 in xcb_send_request () from /usr/lib/libxcb.so.1
#4  0x00007f6dd1943f1a in _XPutXCBBuffer () from /usr/lib/libX11.so.6
#5  0x00007f6dd1944267 in ?? () from /usr/lib/libX11.so.6
#6  0x00007f6dd19370bd in XSetClipMask () from /usr/lib/libX11.so.6
#7  0x00000000004e426d in x_draw_glyph_string (s=0x7fffdd7a95e0)
    at xterm.c:2883
        relief_drawn_p = 0
#8  0x00000000004617cc in draw_glyphs (w=0x1cd5ad0, x=72, row=0x1f727d0, 
    area=TEXT_AREA, start=7, end=8, hl=DRAW_NORMAL_TEXT, overlaps=0)
    at xdisp.c:20504
        head = (struct glyph_string *) 0x7fffdd7a95e0
        tail = (struct glyph_string *) 0x7fffdd7a95e0
        s = (struct glyph_string *) 0x7fffdd7a95e0
        clip_head = (struct glyph_string *) 0x0
        clip_tail = (struct glyph_string *) 0x0
        i = 8
        j = -579167284
        x_reached = 72
        last_x = 648
        area_left = 8
        f = (struct frame *) 0x19a52b0
#9  0x0000000000466f9c in x_write_glyphs (start=0x13de968, len=1)
    at xdisp.c:21913
        x = 0
        hpos = 7
#10 0x0000000000418fe2 in update_text_area (w=0x1cd5ad0, vpos=8)
    at dispnew.c:4585
        start_x = 56
        start_hpos = 7
        start = (struct glyph *) 0x13de968
        current_x = 64
        skip_first_p = 0
        can_skip_p = 1
        stop = 33
        i = 8
        desired_glyph = (struct glyph *) 0x13de990
        overlapping_glyphs_p = 1
        desired_stop_pos = 62
        x = 64
        current_glyph = (struct glyph *) 0x1f8d8e0
        current_row = (struct glyph_row *) 0xf63610
        desired_row = (struct glyph_row *) 0x1f727d0
        rif = (struct redisplay_interface *) 0x8a46c0
        changed_p = 1
(gdb) f 8
#8  0x0000000000656170 in xftfont_draw (s=0x7fff461d8010, from=0, to=1, x=64, 
    y=149, with_background=1) at xftfont.c:549
549         XftDrawRect (xft_draw, &bg,
(gdb) p s
$1 = (struct glyph_string *) 0x7fff461d8010
(gdb) p *s
$2 = {
  x = 64, 
  y = 136, 
  ybase = 149, 
  width = 8, 
  background_width = 8, 
  height = 17, 
  left_overhang = 0, 
  right_overhang = 0, 
  f = 0x19a52b0, 
  w = 0x1cd5ad0, 
  display = 0xcb8790, 
  window = 54526142, 
  row = 0x1f6f7f0, 
  area = TEXT_AREA, 
  char2b = 0x7fff461d7ff0, 
  nchars = 1, 
  hl = DRAW_NORMAL_TEXT, 
  face = 0x13cdae0, 
  font = 0x1c04810, 
  cmp = 0x0, 
  cmp_id = 0, 
  cmp_from = 0, 
  cmp_to = 0, 
  extends_to_end_of_line_p = 0, 
  background_filled_p = 0, 
  two_byte_p = 0, 
  font_not_found_p = 0, 
  stippled_p = 0, 
  for_overlaps = 0, 
  padding_p = 0, 
  gc = 0xfbbf00, 
  first_glyph = 0x13de968, 
  img = 0x0, 
  slice = {
    x = 0, 
    y = 0, 
    width = 0, 
    height = 0
  }, 
  clip_head = 0x0, 
  clip_tail = 0x0, 
  clip = {{
      x = 8, 
      y = 136, 
      width = 640, 
      height = 17
    }, {
      x = 0, 
      y = 0, 
      width = 0, 
      height = 0
    }}, 
  num_clips = 1, 
  underline_position = 0, 
  underline_thickness = 0, 
  next = 0x0, 
  prev = 0x0
}
(gdb) p *(s->font)
$3 = {
  size = 4611686018429485074, 
  next = 0x1c121e0, 
  props = {12109345, 21852401, 18521457, 11665121, 12097873, 205440, 205056, 
    205312, 104, 11665121, 800, 0, 12327557, 11665121, 31929283, 31929251, 
    31929347, 18521505}, 
  max_width = 0, 
  pixel_size = 13, 
  height = 17, 
  space_width = 8, 
  average_width = 8, 
  min_width = 8, 
  ascent = 13, 
  descent = 4, 
  underline_thickness = 0, 
  underline_position = 0, 
  vertical_centering = 0, 
  encoding_type = 0 '\0', 
  baseline_offset = 0, 
  relative_compose = 0, 
  default_ascent = 0, 
  font_encoder = 0x1c04aa0, 
  driver = 0xb16da0, 
  encoding_charset = -1, 
  repertory_charset = -1
}



--- End Message ---
--- Begin Message --- Subject: Re: Looping in redisplay due to font problem Date: Thu, 09 Oct 2008 12:45:45 -0400
I found the bug: it's an infloop in update_text_area which can happen
when the pixel width of the current glyph is smaller than the lbearing
of the next glyph.  I'm not sure why the bug was triggered only under
the situation I described; maybe, only that exact geometry and font
produced the numbers leading to the infloop.

I've checked in a fix.


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]