bugThe FreeType Project - Bugs: bug #30262, Stack exhaustion in...

 
 

bug #30262: Stack exhaustion in load_truetype_glyph (SIGSEGV)

Submitted by:  Robert Swiecki <jagger>
Submitted on:  Fri 25 Jun 2010 01:34:51 PM UTC  
 
Severity: 3 - NormalItem Group: Crash
Status: FixedPrivacy: Public
Assigned to: Werner LEMBERG <wl>Open/Closed: Closed
Planned Release: 2.3.13

Add a New Comment(Rich Markup)
   

You are not logged in

Please log in, so followups can be emailed to you.

 

Sat 26 Jun 2010 07:34:49 AM UTC, comment #3:

I now could reproduce it: The error only happens if the bytecode interpreter is disabled.

Werner LEMBERG <wl>
Project AdministratorIn charge of this item.
Fri 25 Jun 2010 09:05:23 PM UTC, comment #2:

Ok, I'll check it with the newest lib, I've updated it today's morning AFAIR. Btw.. here's the beginning of the stacktrace:

#28484 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffe230, glyph_index=253, recurse_count=3, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#28485 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffe230, glyph_index=253, recurse_count=2, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#28486 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffe230, glyph_index=253, recurse_count=1, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#28487 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffe230, glyph_index=253, recurse_count=0, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#28488 0x00000000004174af in TT_Load_Glyph (size=0x6b14a0, glyph=0x6b1250, glyph_index=253, load_flags=2059) at /usr/local/google/src/freetype2/src/truetype/ttgload.c:2074
#28489 0x0000000000412853 in Load_Glyph (ttslot=0x6b1250, ttsize=0x6b14a0, glyph_index=253, load_flags=2059) at /usr/local/google/src/freetype2/src/truetype/ttdriver.c:334
#28490 0x0000000000406ade in FT_Load_Glyph (face=0x6aea60, glyph_index=253, load_flags=2059) at /usr/local/google/src/freetype2/src/base/ftobjs.c:677
#28491 0x000000000046445e in af_loader_load_g (loader=0x6ae2a8, scaler=0x7fffffffe690, glyph_index=253, load_flags=2049, depth=0) at /usr/local/google/src/freetype2/src/autofit/afloader.c:99
#28492 0x000000000046561e in af_loader_load_glyph (loader=0x6ae2a8, face=0x6aea60, gindex=253, load_flags=2049) at /usr/local/google/src/freetype2/src/autofit/afloader.c:531
#28493 0x00000000004656b5 in af_autofitter_load_glyph (module=0x6ae280, slot=0x6b1250, size=0x6b14a0, glyph_index=253, load_flags=0) at /usr/local/google/src/freetype2/src/autofit/afmodule.c:65
#28494 0x0000000000406a9f in FT_Load_Glyph (face=0x6aea60, glyph_index=253, load_flags=0) at /usr/local/google/src/freetype2/src/base/ftobjs.c:668
#28495 0x0000000000402673 in test_load (timer=0x7fffffffe850, face=0x6aea60, user_data=0x0) at /usr/local/google/src/freetype2-demos/src/ftbench.c:218
#28496 0x00000000004025a8 in benchmark (face=0x6aea60, test=0x7fffffffe8c0, max_iter=1, max_time=2) at /usr/local/google/src/freetype2-demos/src/ftbench.c:188
#28497 0x000000000040374e in main (argc=1, argv=0x7fffffffea40) at /usr/local/google/src/freetype2-demos/src/ftbench.c:781

Robert Swiecki <jagger>
Fri 25 Jun 2010 08:57:34 PM UTC, comment #1:

Unfortunately, I can't reproduce the problem on my intel x86 GNU/Linux box: Using the current git code, `load_truetype_glyph' is never executed.

Werner LEMBERG <wl>
Project AdministratorIn charge of this item.
Fri 25 Jun 2010 01:34:51 PM UTC, original submission:

Linux amd64

gcc version 4.4.3, compiled with '-O0 -g'

Font: http://alt.swiecki.net/j/f/sigsegv21.ttf

It looks like a stack exhaustion to me (even if dbg shows it's malloc related).

The $rsp register is 0x7fffff5ff000, which is at the bottom of the stack, when x86 call is invoked (call lowers the stack pointer, effectively causing this segfault)

$ gdb ./ftbench
(gdb) r -c 1 sigsegv21.ttf
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff78c018e in *__GI___libc_realloc (oldmem=0x7ffff7434010, bytes=2734080) at malloc.c:3790
3790 malloc.c: No such file or directory.
in malloc.c

(gdb) p/x $rsp
$1 = 0x7fffff5ff000
(gdb) info proc
process 21129

(gdb) shell cat /proc/21129/maps | grep stack
7fffff5ff000-7ffffffff000 rw-p 00000000 00:00 0 [stack]

(gdb) bt
#0 0x00007ffff78c018e in *__GI___libc_realloc (oldmem=0x7ffff7434010, bytes=2734080) at malloc.c:3790
#1 0x0000000000480c45 in ft_realloc (memory=0x6a9010, cur_size=2733984, new_size=2734080, block=0x7ffff7434010) at builds/unix/ftsystem.c:135
#2 0x00000000004111be in ft_mem_qrealloc (memory=0x6a9010, item_size=48, cur_count=56958, new_count=56960, block=0x7ffff7434010, p_error=0x7fffff5ff13c) at /usr/local/google/src/freetype2/src/base/ftutil.c:154
#3 0x0000000000411062 in ft_mem_realloc (memory=0x6a9010, item_size=48, cur_count=56958, new_count=56960, block=0x7ffff7434010, p_error=0x7fffff5ff19c) at /usr/local/google/src/freetype2/src/base/ftutil.c:101
#4 0x00000000004058e3 in FT_GlyphLoader_CheckSubGlyphs (loader=0x6b13e0, n_subs=1) at /usr/local/google/src/freetype2/src/base/ftgloadr.c:292
#5 0x0000000000414134 in TT_Load_Composite_Glyph (loader=0x7fffffffde60) at /usr/local/google/src/freetype2/src/truetype/ttgload.c:594
#6 0x00000000004160f5 in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28479, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1448
#7 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28478, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#8 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28477, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#9 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28476, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#10 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28475, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#11 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28474, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#12 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28473, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#13 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28472, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#14 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28471, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#15 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28470, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#16 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28469, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#17 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28468, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#18 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28467, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#19 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28466, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#20 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28465, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559
#21 0x000000000041664a in load_truetype_glyph (loader=0x7fffffffde60, glyph_index=253, recurse_count=28464, header_only=0 '\000') at /usr/local/google/src/freetype2/src/truetype/ttgload.c:1559

Robert Swiecki <jagger>

 

(Note: upload size limit is set to 16384 kB, after insertion of the required escape characters.)

Attach File(s):
   
   
Comment:
   

Attached Files
file #20819:  sigsegv21.ttf added by jagger (323KiB - application/x-font-ttf)

 

Depends on the following items: None found

Items that depend on this one: None found

 

Carbon-Copy List
  • -unavailable- added by wl (Posted a comment)
  • -unavailable- added by jagger (Submitted the item)
  •  

    Do you think this task is very important?
    If so, you can click here to add your encouragement to it.
    This task has 0 encouragements so far.

    Only logged-in users can vote.

     

    Please enter the title of George Orwell's famous dystopian book (it's a date):

     

     

    Follow 6 latest changes.

    Date Changed By Updated Field Previous Value => Replaced By
    Sat 26 Jun 2010 07:34:49 AM UTCwlStatusNeed Info=>Fixed
      Open/ClosedOpen=>Closed
      Planned ReleaseNone=>2.3.13
    Fri 25 Jun 2010 08:57:34 PM UTCwlStatusNone=>Need Info
      Assigned toNone=>wl
    Fri 25 Jun 2010 01:34:51 PM UTCjaggerAttached File-=>Added sigsegv21.ttf, #20819

    Back to the top


    Powered by Savane 3.1-cleanup1