python-fontconfig icon indicating copy to clipboard operation
python-fontconfig copied to clipboard

Repeatedly calling query causes a segfault

Open cktaylor opened this issue 10 years ago • 1 comments

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 ()

cktaylor avatar Feb 05 '15 20:02 cktaylor

Give my fork a try?

lilydjwg avatar Feb 06 '15 03:02 lilydjwg