--- Begin Message ---
Subject: |
Re: Looping in redisplay due to font problem |
Date: |
Fri, 03 Oct 2008 12:18:18 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) |
Kenichi Handa <handa@m17n.org> writes:
> That's a very strange phenomenon. But, I can't reproduce
> it. When I hit PageDown four times, the top line is "Luxi
> Sans:style=Regular", and "Corsivo" appears on the 9th line
> (logically 8th line because of continuation).
>
> In my case, this font is selected for the default case:
>
> -bitstream-Bitstream Vera Sans
> Mono-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1
>
> Which font is selected in your case?
C-u C-x = gives
-unknown-DejaVu Sans Mono-normal-normal-normal-*-16-*-*-*-m-0-iso10646-1
> And, what does "Emacs begins looping while in redisplay" exactly mean?
Emacs is unresponsive to any further input, and the character "o" in
"Corsivo" flickers. Interrupting the loop in gdb gives the following
backtrace. It seems to be stuck in an Xft function.
#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
#7 0x00007f5466c1f5b1 in XftDrawRect () from /usr/lib/libXft.so.2
#8 0x0000000000656080 in xftfont_draw (s=0x7fff725843b0, from=0, to=1, x=100,
y=175, with_background=1) at xftfont.c:549
#9 0x00000000004e0268 in x_draw_glyph_string_foreground (s=0x7fff725843b0)
at xterm.c:1316
#10 0x00000000004e374c in x_draw_glyph_string (s=0x7fff725843b0)
at xterm.c:2708
#11 0x00000000004616f1 in draw_glyphs (w=0x17ec430, x=110, row=0x1f49b20,
area=TEXT_AREA, start=7, end=8, hl=DRAW_NORMAL_TEXT, overlaps=0)
at xdisp.c:20504
#12 0x0000000000466ec1 in x_write_glyphs (start=0x145f748, len=1)
at xdisp.c:21913
#13 0x0000000000418fa4 in update_text_area (w=0x17ec430, vpos=8)
at dispnew.c:4584
...
--- 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 ---