python-fontconfig
python-fontconfig copied to clipboard
Repeatedly calling query causes a segfault
As the topic states, repeatedly calling query (or just making many queries) causes a segfault. The first case I noticed it with was Hanamina.ttf (https://github.com/tony/dot-fonts/blob/master/Hanazono/HanaMinA.ttf) but I later confirmed it with "dejavu serif". I believe it is dependent on the size of the fonts -- while "hanamina" segfaults after three invocations, "dejavu serif" didnt segfault until around the 20th invocation.
Here is the python to reproduce:
Python 3.4.0 (default, Apr 11 2014, 13:05:11)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import fontconfig
>>> fontconfig.__version__
'0.5.0'
>>> fontconfig.query(family="hanamina")
['/usr/share/fonts/truetype/hanazono/HanaMinA.ttf', '/usr/share/fonts/truetype/ttf-japanese/HanaMinA.ttf']
>>> fontconfig.query(family="hanamina")
['/usr/share/fonts/truetype/hanazono/HanaMinA.ttf', '/usr/share/fonts/truetype/ttf-japanese/HanaMinA.ttf']
>>> fontconfig.query(family="hanamina")
Segmentation fault
Here is gdb backtrace:
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff60900e0 in ?? () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
(gdb) bt
#0 0x00007ffff60900e0 in ?? () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#1 0x00007ffff6090849 in ?? () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#2 0x00007ffff608c518 in ?? () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#3 0x00007ffff608c70f in FcFontSetList () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#4 0x00007ffff608cfad in FcFontList () from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1
#5 0x00007ffff62b7417 in __pyx_pf_10fontconfig_query (__pyx_self=<optimized out>,
__pyx_args=<optimized out>, __pyx_kwds=0x0) at fontconfig.c:1243
#6 0x000000000057c7bc in PyEval_EvalFrameEx ()
#7 0x000000000057d3d3 in PyEval_EvalCodeEx ()
#8 0x000000000060b053 in PyRun_InteractiveOneObject ()
#9 0x000000000060b51e in PyRun_InteractiveLoopFlags ()
#10 0x000000000060d0d4 in Py_Main ()
#11 0x000000000041ec0d in main ()
Give my fork a try?