freetype-devel
[Top][All Lists]
Advanced

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

Re: [Devel] Benchmarking FreeType


From: James H. Cloos Jr.
Subject: Re: [Devel] Benchmarking FreeType
Date: 08 Jun 2002 00:05:54 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1

>>>>> "David" == David Turner <address@hidden> writes:

David> Thanks a lot, it is now in "ft2demos/src/ftbench" ...

David> Since I was optimizing the cache manager when you first posted
David> about your benchmark program ....

I just tried cvs after that sync.  I tested against adobe's
STSongStd-Light-Acro.otf (freely available in the linux acroread 5
directory at ftp.adobe.com).  (I was going to test against all four of
the otf fonts they offer there, but didn't get that far....)

ftbench grows to use however much vm is available to it until it is
killed, ftview gets a segfault at glyph 2009.  The stack trace is:

(gdb) where
#0  0x401b896d in free () from /lib/libc.so.6
#1  0x4001d66f in ft_free (memory=0x8059308, block=0x80b4dc8)
    at /.../freetype2/builds/unix/ftsystem.c:157
#2  0x4001da7e in FT_Free (memory=0x8059308, P=0xbfffeb08)
    at /.../freetype2/src/base/ftutil.c:134
#3  0x4003d763 in psh2_hint_table_done (table=0xbfffeb00, memory=0x8059308)
    at /.../freetype2/src/pshinter/pshalgo2.c:62
#4  0x4003ddf5 in psh2_glyph_done (glyph=0xbfffeae4)
    at /.../freetype2/src/pshinter/pshalgo2.c:815
#5  0x4003e9fc in ps2_hints_apply (ps_hints=0x805d75c, outline=0x80b3afc, 
globals=0x80b3b78)
    at /.../freetype2/src/pshinter/pshalgo2.c:1548
#6  0x400322d2 in CFF_Parse_CharStrings (decoder=0xbfffeca4, 
charstring_base=0x403e58a0 <Address 0x403e58a0 out of bounds>, 
charstring_len=312)
    at /.../freetype2/src/cff/cffgload.c:1677
#7  0x400328af in CFF_Load_Glyph (glyph=0x80b3a20, size=0x80b3b38, 
glyph_index=2052, load_flags=4)
    at /.../freetype2/src/cff/cffgload.c:2233
#8  0x4002d75e in Load_Glyph (slot=0x80b3a20, size=0x80b3b38, glyph_index=2052, 
load_flags=4)
    at /.../freetype2/src/cff/cffdrivr.c:204
#9  0x400209db in FT_Load_Glyph (face=0x8095250, glyph_index=2052, load_flags=4)
    at /.../freetype2/src/base/ftobjs.c:469
#10 0x4002cb0a in ftc_sbit_node_load (snode=0x810bf40, manager=0x805e970, 
sfam=0x80b4538, gindex=2052, asize=0xbffff0d8)
    at /.../freetype2/src/cache/ftcsbits.c:186
#11 0x4002cd45 in ftc_sbit_node_compare (snode=0x810bf40, squery=0xbffff154, 
cache=0x805ea28)
    at /.../freetype2/src/cache/ftcsbits.c:350
#12 0x4002cf5f in ftc_sbit_cache_lookup (cache=0x805ea28, query=0xbffff154, 
anode=0xbffff150)
    at /.../freetype2/src/cache/ftccache.i:88
#13 0x4002d04b in FTC_SBitCache_Lookup (cache=0x805ea28, desc=0x80511cc, 
gindex=2052, ansbit=0xbffff1b8, anode=0x0)
    at /.../freetype2/src/cache/ftcsbits.c:506
#14 0x08049ad2 in get_glyph_bitmap (Index=2052, target=0xbffff214, 
left=0xbffff200, top=0xbffff204, x_advance=0xbffff208, y_advance=0xbffff20c, 
aglyf=0xbffff210)
    at /.../ft2demos/src/ftcommon.i:511
#15 0x08049d31 in Render_All (first_index=2009)
    at /.../ft2demos/src/ftview.c:59
#16 0x0804a713 in main (argc=3, argv=0xbffff2f4)
    at /.../ft2demos/src/ftview.c:510
#17 0x401617ee in __libc_start_main () from /lib/libc.so.6

Trying ftview against msmincho.ttc from doze, the segfault comes later
at glyph 16133 with this trace:

#0  0x401b8990 in free () from /lib/libc.so.6
#1  0x4001d66f in ft_free (memory=0x8059308, block=0x8135048)
    at /.../freetype2/builds/unix/ftsystem.c:157
#2  0x4001da7e in FT_Free (memory=0x8059308, P=0x815bbc4)
    at /.../freetype2/src/base/ftutil.c:134
#3  0x4002ca11 in ftc_sbit_node_done (snode=0x815bba0, cache=0x805ea28)
    at /.../freetype2/src/cache/ftcsbits.c:113
#4  0x4002bdff in ftc_node_destroy (node=0x815bba0, manager=0x805e970)
    at /.../freetype2/src/cache/ftccache.c:399
#5  0x4002b8d3 in FTC_Manager_Compress (manager=0x805e970)
    at /.../freetype2/src/cache/ftcmanag.c:677
#6  0x4002c3ca in ftc_cache_lookup (cache=0x805ea28, query=0xbffff164, 
anode=0xbffff160)
    at /.../freetype2/src/cache/ftccache.c:896
#7  0x4002cf84 in ftc_sbit_cache_lookup (cache=0x805ea28, query=0xbffff164, 
anode=0xbffff160)
    at /.../freetype2/src/cache/ftccache.i:101
#8  0x4002d04b in FTC_SBitCache_Lookup (cache=0x805ea28, desc=0x80511cc, 
gindex=17072, ansbit=0xbffff1c8, anode=0x0)
    at /.../freetype2/src/cache/ftcsbits.c:506
#9  0x08049ad2 in get_glyph_bitmap (Index=17072, target=0xbffff224, 
left=0xbffff210, top=0xbffff214, x_advance=0xbffff218, y_advance=0xbffff21c, 
aglyf=0xbffff220)
    at /.../ft2demos/src/ftcommon.i:511
#10 0x08049d31 in Render_All (first_index=17000)
    at /.../ft2demos/src/ftview.c:59
#11 0x0804a713 in main (argc=3, argv=0xbffff304)
    at /.../ft2demos/src/ftview.c:510
#12 0x401617ee in __libc_start_main () from /lib/libc.so.6

No options were given to ftview for those tests, the point size arg
was 44 in each case.  (Easy to type.)

Box is suse 7.3, xfree 4.2.0, and ftview says:

available pixmap formats
depth  pixbits  scanpad
   1       1       32
   4       8       32
   8       8       32
  15      16       32
  16      16       32
  24      32       32
>   RGB ff0000:ff00:00ff, colors 256, bits  8  TrueColor
  32      32       32


Interestingly, Arialuni.TTF does not tweak the bug until one quits,
when it gives this trace:

#0  ftc_cache_clear (cache=0x805eae0)
    at /.../freetype2/src/cache/ftccache.c:666
#1  0x4002c0e8 in ftc_cache_done (cache=0x805eae0)
    at /.../freetype2/src/cache/ftccache.c:704
#2  0x4002b7b4 in FTC_Manager_Done (manager=0x805e970)
    at /.../freetype2/src/cache/ftcmanag.c:539
#3  0x08049924 in done_freetype ()
    at /.../ft2demos/src/ftcommon.i:416
#4  0x0804a94f in main (argc=3, argv=0xbffff304)
    at /.../ft2demos/src/ftview.c:585
#5  0x401617ee in __libc_start_main () from /lib/libc.so.6

batang.ttc dies at glyph 4004 with:

#0  ftc_node_hash_unlink (node=0x8229278, cache=0x805eae0)
    at /.../freetype2/src/cache/ftccache.c:173
#1  0x4002bde3 in ftc_node_destroy (node=0x8229278, manager=0x805e970)
    at /.../freetype2/src/cache/ftccache.c:395
#2  0x4002b8d3 in FTC_Manager_Compress (manager=0x805e970)
    at /.../freetype2/src/cache/ftcmanag.c:677
#3  0x4002c3ca in ftc_cache_lookup (cache=0x805ea28, query=0xbffff164, 
anode=0xbffff160)
    at /.../freetype2/src/cache/ftccache.c:896
#4  0x4002cf84 in ftc_sbit_cache_lookup (cache=0x805ea28, query=0xbffff164, 
anode=0xbffff160)
    at /.../freetype2/src/cache/ftccache.i:101
#5  0x4002d04b in FTC_SBitCache_Lookup (cache=0x805ea28, desc=0x80511cc, 
gindex=4080, ansbit=0xbffff1c8, anode=0x0) 
    at /.../freetype2/src/cache/ftcsbits.c:506
#6  0x08049ad2 in get_glyph_bitmap (Index=4080, target=0xbffff224, 
left=0xbffff210, top=0xbffff214, x_advance=0xbffff218, y_advance=0xbffff21c, 
aglyf=0xbffff220)
    at /.../ft2demos/src/ftcommon.i:511
#7  0x08049d31 in Render_All (first_index=4004)
    at /.../ft2demos/src/ftview.c:59
#8  0x0804a713 in main (argc=3, argv=0xbffff304)
    at /.../ft2demos/src/ftview.c:510
#9  0x401617ee in __libc_start_main () from /lib/libc.so.6

ftbench on batang.ttc segfaults at Outline cache (1st run) with:

#0  ftc_node_hash_unlink (node=0x1190cb10, cache=0x118fd020)
    at /.../freetype2/src/cache/ftccache.c:173
#1  0x4002bde3 in ftc_node_destroy (node=0x1190cb10, manager=0x118fcf68)
    at /.../freetype2/src/cache/ftccache.c:395
#2  0x4002b8d3 in FTC_Manager_Compress (manager=0x118fcf68)
    at /.../freetype2/src/cache/ftcmanag.c:677
#3  0x4002c3ca in ftc_cache_lookup (cache=0x118fe678, query=0xbffff1d4, 
anode=0xbffff1d0)
    at /.../freetype2/src/cache/ftccache.c:896
#4  0x4002c8a5 in FTC_ImageCache_Lookup (cache=0x118fe678, desc=0x804ae8c, 
gindex=3984, aglyph=0xbffff228, anode=0x0)
    at /.../freetype2/src/cache/ftcimage.c:337
#5  0x08049073 in image_cache_test (index=3984, charcode=12813)
    at /.../ft2demos/src/ftbench.c:189
#6  0x08048eab in bench (bench_func=0x8049050 <image_cache_test>, 
title=0x8049be7 "Outline cache (1st run)", max=1)
    at /.../ft2demos/src/ftbench.c:134
#7  0x08049533 in main (argc=2, argv=0xbffff304)
    at /.../ft2demos/src/ftbench.c:323
#8  0x400a17ee in __libc_start_main () from /lib/libc.so.6


I've included each because they all show the segfault at a different
point.  I presume something is being free(3)ed twice.

-JimC


reply via email to

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