Re: FontConfig memory question

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

 



It could be that most of these leaks are not in fontconfig but in pango. The valgrind entries mostly get to fontconfig with a call passing through pango_font_map_load_fontset(). If pango induces fontconfig to allocate memory, but it never tells it to release it, then that would explain valgrind entries like this:

==2513== 2 bytes in 1 blocks are indirectly lost in loss record 165 of 47,988 ==2513== at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==2513==    by 0x58A0C30: strdup (strdup.c:43)
==2513==    by 0x4FB1F39: FcValueSave (fcpat.c:95)
==2513==    by 0x4FB2E80: FcPatternObjectAddWithBinding (fcpat.c:608)
==2513==    by 0x4FB300E: FcPatternObjectAdd (fcpat.c:658)
==2513==    by 0x4FB3386: FcPatternObjectAddString (fcpat.c:777)
==2513== by 0x4F29964: ??? (in /usr/lib/i386-linux-gnu/libpangoft2-1.0.so.0.3000.0) ==2513== by 0x4F65D26: pango_font_map_load_fontset (in /usr/lib/i386-linux-gnu/libpango-1.0.so.0.3000.0) ==2513== by 0x4F62F58: ??? (in /usr/lib/i386-linux-gnu/libpango-1.0.so.0.3000.0) ==2513== by 0x4F63D5E: pango_itemize_with_base_dir (in /usr/lib/i386-linux-gnu/libpango-1.0.so.0.3000.0) ==2513== by 0x4F6BC85: ??? (in /usr/lib/i386-linux-gnu/libpango-1.0.so.0.3000.0) ==2513== by 0x4F6CE43: ??? (in /usr/lib/i386-linux-gnu/libpango-1.0.so.0.3000.0) ==2513== by 0x4F6D377: pango_layout_get_pixel_extents (in /usr/lib/i386-linux-gnu/libpango-1.0.so.0.3000.0) ==2513== by 0x44E455C: ??? (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.10) ==2513== by 0x44DC3B3: gtk_cell_renderer_get_size (in /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0.2400.10)

I was wrong about text_reassemble.c not having any leaked memory through fontconfig 2.11. It does leak a little, but in a fairly mysterious way, and not from the section of code that was listed in the first post in this thread. Here is one of the valgrind records:

==2513== 160 bytes in 1 blocks are still reachable in loss record 40,358 of 47,988 ==2513== at 0x402BE68: malloc (in /usr/lib/valgrind/vgpreload_memcheck-x86-linux.so)
==2513==    by 0x4FB623E: _FcStrSetAppend (fcstr.c:1201)
==2513==    by 0x4FB6AB4: FcStrSetAddFilename (fcstr.c:1260)
==2513==    by 0x4FA1A18: FcConfigAddCache (fccfg.c:358)
==2513==    by 0x4FA1AB2: FcConfigAddDirList (fccfg.c:382)
==2513==    by 0x4FA1D45: FcConfigBuildFonts (fccfg.c:412)
==2513==    by 0x4FABE8D: FcInitLoadOwnConfigAndFonts (fcinit.c:140)
==2513==    by 0x8385EDD: trinfo_init (text_reassemble.c:1502)
==2513== by 0x83A53EA: Inkscape::Extension::Internal::Emf::open(Inkscape::Extension::Input*, char const*) (emf-inout.cpp:3426) ==2513== by 0x8320A09: Inkscape::Extension::Input::open(char const*) (input.cpp:153) ==2513== by 0x831E599: Inkscape::Extension::open(Inkscape::Extension::Extension*, char const*) (system.cpp:117) ==2513== by 0x80F583C: sp_file_open(Glib::ustring const&, Inkscape::Extension::Extension*, bool, bool) (file.cpp:274)
==2513==    by 0x808778C: sp_main_gui(int, char const**) (main.cpp:1087)
==2513==    by 0x8086EAF: main (main.cpp:812)

The mystery is that trinfo_init does not call FcInitLoadOwnConfigAndFonts directly. It calls ftinfo_init() which in turn calls FcInit(), and presumably somewhere down from there FcInitLoadOwnConfigAndFonts() is called. Not sure why valgrind does not show these intervening functions.


Regards,

David Mathog
mathog@xxxxxxxxxxx
Manager, Sequence Analysis Facility, Biology Division, Caltech
_______________________________________________
Fontconfig mailing list
Fontconfig@xxxxxxxxxxxxxxxxxxxxx
http://lists.freedesktop.org/mailman/listinfo/fontconfig




[Index of Archives]     [Fedora Fonts]     [Fedora Users]     [Fedora Cloud]     [Kernel]     [Fedora Packaging]     [Fedora Desktop]     [PAM]     [Gimp Graphics Editor]     [Yosemite News]

  Powered by Linux