After running gdb again with debug information for libfreetype and
libcairo, it seems SIGSEGV is received at line 39 of
freetype-2.3.5/src/base/fttype1.c in FT_Get_PS_Font_Info:

39            FT_FACE_FIND_SERVICE( face, service, POSTSCRIPT_INFO );

At this point "face" looks like this:

(gdb) print *face
$1 = {num_faces = -11075584, face_index = 6684672, face_flags = -11599872, 
style_flags = 6684672, num_glyphs = -11730944, 
  family_name = 0x660000 <Address 0x660000 out of bounds>, style_name = 
0xff4a0000 <Address 0xff4a0000 out of bounds>, 
  num_fixed_sizes = 6684672, available_sizes = 0xff430000, num_charmaps = 
7012352, charmaps = 0xff3f0000, generic = {data = 0x700000, 
    finalizer = 0xff3f0000}, bbox = {xMin = 8060928, yMin = -12648448, xMax = 
12779520, yMax = -7405568}, units_per_EM = 0, ascender = 195, 
  descender = 0, height = 3, max_advance_width = 0, max_advance_height = 195, 
underline_position = 0, underline_thickness = 32, 
  glyph = 0xc10000, size = 0x6a0000, charmap = 0x8b0000, driver = 0x6a0000, 
memory = 0x680000, stream = 0x6a0000, sizes_list = {head = 0x560000, 
    tail = 0x4f0000}, autohint = {data = 0x560000, finalizer = 0x350000}, 
extensions = 0x560000, internal = 0x1b0000}

This is what the same command returns during previous (successful)
invocations of FT_Get_PS_Font_Info:

(gdb) print *face
$1 = {num_faces = 1, face_index = 0, face_flags = 2577, style_flags = 0, 
num_glyphs = 11, 
  family_name = 0xb3a31d98 "NMUXUY+NewCenturySchlbk-Roman", style_name = 
0xb3c252e8 "Roman", num_fixed_sizes = 0, 
  available_sizes = 0x0, num_charmaps = 2, charmaps = 0xb3a2b1e8, generic = 
{data = 0x0, finalizer = 0}, bbox = {
    xMin = -217, yMin = -302, xMax = 1188, yMax = 1165}, units_per_EM = 1000, 
ascender = 1165, descender = -302, 
  height = 1467, max_advance_width = 0, max_advance_height = 1467, 
underline_position = -100, 
  underline_thickness = 50, glyph = 0xb3c3e7c0, size = 0xb3c3e8a0, charmap = 
0xb3c3afd8, driver = 0xb3cf9848, 
  memory = 0xb3c376d8, stream = 0xb3c3a050, sizes_list = {head = 0xb3a256a0, 
tail = 0xb3a256a0}, autohint = {
    data = 0x0, finalizer = 0}, extensions = 0x0, internal = 0xb3a34a90}

So it seems to me like the crash is due to FT_Get_PS_Font_Info being
called with illegal (garbage) arguments from libcairo. I couldn't get
debug information to show for the calling function in libcairo (I am
probably doing something wrong) but " grep FT_Get_PS_Font_Info .
-drecurse" says there is just one file that contains occurrences of
FT_Get_PS_Font_Info in libcairo: cairo-type1-subset.c

There are two calls of FT_Get_PS_Font_Info there and in both cases
"face" is constructed through an invocation of
"_cairo_ft_unscaled_font_lock_face".

-- 
evince crashes while trying to print
https://bugs.launchpad.net/bugs/157797
You received this bug notification because you are a member of Ubuntu
Bugs, which is the bug contact for Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to