Subject: Re: bug#11813: Segmentation fault on launch related to x_draw_glyph_string_background

From: Left Right <[email-masked]>
Date: Wed, 4 Jul 2012 13:25:17 +0300

Hi, sorry for delay.

I've applied the patch, and it looks like the initial problem is
fixed, however, the other problem, which seems related surfaces. Below
is debugger output (I've compiled w/o optimization flags).

gdb ./src/emacs
GNU gdb (GDB) 7.0.1-debian
Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/wvxvw/projects/emacs-sources/emacs/src/emacs...done.
(gdb) r -q
Starting program: /home/wvxvw/projects/emacs-sources/emacs/src/emacs -q
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x000000000056d3cb in x_draw_glyphless_glyph_string_foreground
(s=0x7fffffffba40) at xterm.c:1419
1419                  code = s->font->driver->encode_char (s->font, str[j]);
(gdb) p s
$1 = (struct glyph_string *) 0x7fffffffba40
(gdb) p *s
$2 = {x = 82, y = 631, ybase = 649, width = 288, background_width =
288, height = 25, left_overhang = 0, right_overhang = 0, f =
0x146adb0, w = 0x146bdc0, display = 0x161a6b0,
  window = 60817534, row = 0x16748e0, area = TEXT_AREA, char2b =
0x7fffffffb710, nchars = 12, hl = DRAW_NORMAL_TEXT, face = 0x1615dd0,
font = 0x0, cmp = 0x0, cmp_id = 0, cmp_from = 0,
  cmp_to = 0, extends_to_end_of_line_p = 0, background_filled_p = 1,
two_byte_p = 0, font_not_found_p = 0, stippled_p = 0, for_overlaps =
0, padding_p = 0, gc = 0x16a5450,
  first_glyph = 0xf20780, img = 0x0, slice = {x = 0, y = 0, width = 0,
height = 0}, clip_head = 0x0, clip_tail = 0x0, clip = {{x = 1, y =
631, width = 840, height = 25}, {x = 0, y = 0,
      width = 0, height = 0}}, num_clips = 1, underline_position = 0,
underline_thickness = 0, next = 0x7fffffffb940, prev = 0x7fffffffbbe0}
(gdb) p s->font
$3 = (struct font *) 0x0
(gdb) c
Continuing.
Fatal error (11)
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff5255497 in kill () from /lib/libc.so.6
(gdb) q

If I may suggest, I don't know the code very well, but, could it
assert on whether the font exists or not and print out somehow what
font it is looking for? That might be even better then accounting for
non-existing fonts later on.

One more clarification, this is not GTK, I'm running KDE 4.4.5.
Perhaps, although unlikely, I have to change something in it's fonts
configuration? (not that I know of such, but if you do, you are
welcome to suggest).

Best.

Oleg