Hi all,

I'm getting an intermittent segmentation fault (only happens one every
3 runs or so) when using a checkout of Pyglet trunk under Fedora 190
64 bit.  I'm using the proprietary Nvida driver on a GTX260.  I've
attached a minimal example with triggers the problem; it seems to
happen when the label is created.  A GDB stack trace pointed to
fontconfig as the culprit; I've got fontconfig 2.6 installed.  Here's
the GDB trace with debug info:

(gdb) bt
#0  FcPatternObjectAddWithBinding (p=0xef4320d0, object=10, value=
        {type = FcTypeDouble, u = {s = 0x4028000000000000 <Address
0x4028000000000000 out of bounds>, i = 0, b = 0, d = 12, m =
0x4028000000000000, c = 0x4028000000000000, f = 0x4028000000000000, l
= 0x4028000000000000}},
    binding=FcValueBindingStrong, append=1) at fcpat.c:476
#1  0x0000000000b7e7b4 in ffi_call_unix64 ()
    at /usr/src/debug/Python-2.5.2/Modules/_ctypes/libffi/src/x86/unix64.S:73
#2  0x0000000000b7e59c in ffi_call (cif=0x7fffffffb010,
    fn=0x3a6fa18b10 <IA__FcPatternAddDouble>, rvalue=0x7fffffffaf30,
    avalue=0x7fffffffaf00)
    at /usr/src/debug/Python-2.5.2/Modules/_ctypes/libffi/src/x86/ffi64.c:428
#3  0x0000000000b79715 in _call_function_pointer ()
    at /usr/src/debug/Python-2.5.2/Modules/_ctypes/callproc.c:668
#4  _CallProc (pProc=0x3a6fa18b10 <IA__FcPatternAddDouble>,
    argtuple=0x7ffff150a0f0, flags=<value optimized out>, argtypes=0x0,
    restype=0x6c32e0, checker=0x0)
    at /usr/src/debug/Python-2.5.2/Modules/_ctypes/callproc.c:991
#5  0x0000000000b7404f in CFuncPtr_call (self=0x7fffef44ed98,
    inargs=0x7ffff150a0f0, kwds=0x0)
    at /usr/src/debug/Python-2.5.2/Modules/_ctypes/_ctypes.c:3373
#6  0x0000003a85a3d493 in PyObject_Call (func=0xef4320d0, arg=0xa, kw=0x2)
    at Objects/abstract.c:1861
#7  0x0000003a85abcfd3 in do_call (na=1) at Python/ceval.c:3784
---Type <return> to continue, or q <return> to quit---
#8  call_function () at Python/ceval.c:3596
#9  PyEval_EvalFrameEx (f=0x7fffee71c590, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#10 0x0000003a85abfe6d in fast_function () at Python/ceval.c:3659
#11 call_function () at Python/ceval.c:3594
#12 PyEval_EvalFrameEx (f=0x7fffee7174a0, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#13 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7fffef9eba08,
    globals=<value optimized out>, locals=<value optimized out>,
    args=0x7fffee717648, argcount=3, kws=0x7fffef97e2f0, kwcount=3,
    defs=0x7fffef3fcce8, defcount=3, closure=0x0) at Python/ceval.c:2836
#14 0x0000003a85a5be07 in function_call (func=0x7fffefa0af50,
    arg=0x7ffff7f89a50, kw=0x7fffef4ae2d0) at Objects/funcobject.c:517
#15 0x0000003a85a3d493 in PyObject_Call (func=0xef4320d0, arg=0xa, kw=0x2)
    at Objects/abstract.c:1861
#16 0x0000003a85a44740 in instancemethod_call (func=0x7fffefa0af50,
    arg=0x7ffff7f89a50, kw=0x7fffef4ae2d0) at Objects/classobject.c:2519
#17 0x0000003a85a3d493 in PyObject_Call (func=0xef4320d0, arg=0xa, kw=0x2)
    at Objects/abstract.c:1861
#18 0x0000003a85a8890e in slot_tp_init (self=<value optimized out>,
    args=0x7fffef4626c8, kwds=0x7fffef4ae2d0) at Objects/typeobject.c:4943
#19 0x0000003a85a8734e in type_call (type=<value optimized out>,
    args=0x7fffef4626c8, kwds=0x7fffef4ae2d0) at Objects/typeobject.c:436
---Type <return> to continue, or q <return> to quit---
#20 0x0000003a85a3d493 in PyObject_Call (func=0xef4320d0, arg=0xa, kw=0x2)
    at Objects/abstract.c:1861
#21 0x0000003a85abcfd3 in do_call (na=1) at Python/ceval.c:3784
#22 call_function () at Python/ceval.c:3596
#23 PyEval_EvalFrameEx (f=0x7fffee716e60, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#24 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7fffef9a9828,
    globals=<value optimized out>, locals=<value optimized out>,
    args=0x7fffee717000, argcount=2, kws=0x7fffee716df0, kwcount=3,
    defs=0x7fffef9ec068, defcount=5, closure=0x0) at Python/ceval.c:2836
#25 0x0000003a85abefdc in fast_function () at Python/ceval.c:3669
#26 call_function () at Python/ceval.c:3594
#27 PyEval_EvalFrameEx (f=0x7fffee716c20, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#28 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7fffef457648,
    globals=<value optimized out>, locals=<value optimized out>,
    args=0x7fffee716db0, argcount=1, kws=0x7fffee716bd8, kwcount=1,
    defs=0x7fffef458bf0, defcount=2, closure=0x0) at Python/ceval.c:2836
#29 0x0000003a85abefdc in fast_function () at Python/ceval.c:3669
#30 call_function () at Python/ceval.c:3594
#31 PyEval_EvalFrameEx (f=0x7fffee716a40, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#32 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7fffef4575d0,
---Type <return> to continue, or q <return> to quit---
    globals=<value optimized out>, locals=<value optimized out>,
    args=0x7fffee716bc8, argcount=1, kws=0x7fffee7169e8, kwcount=1,
    defs=0x7fffef459ae8, defcount=1, closure=0x0) at Python/ceval.c:2836
#33 0x0000003a85abefdc in fast_function () at Python/ceval.c:3669
#34 call_function () at Python/ceval.c:3594
#35 PyEval_EvalFrameEx (f=0x7fffee716820, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#36 0x0000003a85abfe6d in fast_function () at Python/ceval.c:3659
#37 call_function () at Python/ceval.c:3594
#38 PyEval_EvalFrameEx (f=0x7fffee716600, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#39 0x0000003a85abfe6d in fast_function () at Python/ceval.c:3659
#40 call_function () at Python/ceval.c:3594
#41 PyEval_EvalFrameEx (f=0x7fffee7161f0, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#42 0x0000003a85abfe6d in fast_function () at Python/ceval.c:3659
#43 call_function () at Python/ceval.c:3594
#44 PyEval_EvalFrameEx (f=0x7fffee716030, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#45 0x0000003a85abfe6d in fast_function () at Python/ceval.c:3659
#46 call_function () at Python/ceval.c:3594
#47 PyEval_EvalFrameEx (f=0x7fffef4adaf0, throwflag=<value optimized out>)
    at Python/ceval.c:2272
---Type <return> to continue, or q <return> to quit---
#48 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7ffff0557eb8,
    globals=<value optimized out>, locals=<value optimized out>,
    args=0x7fffef4624e8, argcount=2, kws=0x0, kwcount=0, defs=0x0, defcount=0,
    closure=0x0) at Python/ceval.c:2836
#49 0x0000003a85a5be72 in function_call (func=0x7fffef4530c8,
    arg=0x7fffef4624d0, kw=0x0) at Objects/funcobject.c:517
#50 0x0000003a85a3d493 in PyObject_Call (func=0xef4320d0, arg=0xa, kw=0x2)
    at Objects/abstract.c:1861
#51 0x0000003a85a3dec7 in call_function_tail (callable=0x7fffef4530c8,
    args=0x7fffef4624d0) at Objects/abstract.c:1892
#52 0x0000003a85a3e408 in PyObject_CallFunction (callable=0x7fffef4530c8,
    format=<value optimized out>) at Objects/abstract.c:1916
#53 0x0000003a85a4c633 in property_descr_set (self=<value optimized out>,
    obj=<value optimized out>, value=<value optimized out>)
    at Objects/descrobject.c:1168
#54 0x0000003a85a70f36 in PyObject_GenericSetAttr (obj=0x68aa10,
    name=0x7ffff7f952a0, value=0x7fffef45f690) at Objects/object.c:1412
#55 0x0000003a85a71681 in PyObject_SetAttr (v=0x68aa10, name=0x7ffff7f952a0,
    value=0x7fffef45f690) at Objects/object.c:1183
#56 0x0000003a85abc0ca in PyEval_EvalFrameEx (f=0x7fffef4b1410,
    throwflag=<value optimized out>) at Python/ceval.c:1783
#57 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7ffff0557990,
    globals=<value optimized out>, locals=<value optimized out>,
---Type <return> to continue, or q <return> to quit---
    args=0x7fffef4b15c8, argcount=2, kws=0x7fffef4b11f8, kwcount=6,
    defs=0x7fffef9b5a28, defcount=6, closure=0x0) at Python/ceval.c:2836
#58 0x0000003a85abefdc in fast_function () at Python/ceval.c:3669
#59 call_function () at Python/ceval.c:3594
#60 PyEval_EvalFrameEx (f=0x7fffef4b1010, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#61 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7ffff1504c60,
    globals=<value optimized out>, locals=<value optimized out>,
    args=0x7fffef4a3de0, argcount=12, kws=0x7fffef4a3e40, kwcount=0,
    defs=0x7fffef3fe218, defcount=11, closure=0x0) at Python/ceval.c:2836
#62 0x0000003a85abefdc in fast_function () at Python/ceval.c:3669
#63 call_function () at Python/ceval.c:3594
#64 PyEval_EvalFrameEx (f=0x7fffef4a3bd0, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#65 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7ffff06a4210,
    globals=<value optimized out>, locals=<value optimized out>,
    args=0x7fffef4a3dd8, argcount=2, kws=0x0, kwcount=0, defs=0x7fffef3d2668,
    defcount=17, closure=0x0) at Python/ceval.c:2836
#66 0x0000003a85a5be72 in function_call (func=0x7fffef466d70,
    arg=0x7ffff7f88fc8, kw=0x0) at Objects/funcobject.c:517
#67 0x0000003a85a3d493 in PyObject_Call (func=0xef4320d0, arg=0xa, kw=0x2)
    at Objects/abstract.c:1861
#68 0x0000003a85a44740 in instancemethod_call (func=0x7fffef466d70,
---Type <return> to continue, or q <return> to quit---
    arg=0x7ffff7f88fc8, kw=0x0) at Objects/classobject.c:2519
#69 0x0000003a85a3d493 in PyObject_Call (func=0xef4320d0, arg=0xa, kw=0x2)
    at Objects/abstract.c:1861
#70 0x0000003a85a8890e in slot_tp_init (self=<value optimized out>,
    args=0x7ffff7f94150, kwds=0x0) at Objects/typeobject.c:4943
#71 0x0000003a85a8734e in type_call (type=<value optimized out>,
    args=0x7ffff7f94150, kwds=0x0) at Objects/typeobject.c:436
#72 0x0000003a85a3d493 in PyObject_Call (func=0xef4320d0, arg=0xa, kw=0x2)
    at Objects/abstract.c:1861
#73 0x0000003a85abcfd3 in do_call (na=1) at Python/ceval.c:3784
#74 call_function () at Python/ceval.c:3596
#75 PyEval_EvalFrameEx (f=0x61c460, throwflag=<value optimized out>)
    at Python/ceval.c:2272
#76 0x0000003a85ac0865 in PyEval_EvalCodeEx (co=0x7ffff7f7a5d0,
    globals=<value optimized out>, locals=<value optimized out>, args=0x0,
    argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0)
    at Python/ceval.c:2836
#77 0x0000003a85ac0aa2 in PyEval_EvalCode (co=0xef4320d0, globals=0xa,
    locals=0x2) at Python/ceval.c:494
#78 0x0000003a85adc931 in run_mod (mod=<value optimized out>,
    filename=<value optimized out>, globals=0x6245a0, locals=0x6245a0,
    flags=<value optimized out>, arena=<value optimized out>)
    at Python/pythonrun.c:1273
---Type <return> to continue, or q <return> to quit---
#79 0x0000003a85adca06 in PyRun_FileExFlags (fp=0x601010,
    filename=0x7fffffffe633 "test.py", start=257, globals=0x6245a0,
    locals=0x6245a0, closeit=1, flags=0x7fffffffe250)
    at Python/pythonrun.c:1259
#80 0x0000003a85addfed in PyRun_SimpleFileExFlags (fp=0x601010,
    filename=0x7fffffffe633 "test.py", closeit=1, flags=0x7fffffffe250)
    at Python/pythonrun.c:879
#81 0x0000003a85ae7ef1 in Py_Main (argc=1, argv=<value optimized out>)
    at Modules/main.c:523
#82 0x0000003a6b21e576 in __libc_start_main (main=0x400710 <main>, argc=2,
    ubp_av=0x7fffffffe368, init=0x400730 <__libc_csu_init>,
    fini=<value optimized out>, rtld_fini=<value optimized out>,
    stack_end=0x7fffffffe358) at libc-start.c:220
#83 0x0000000000400649 in _start ()


Looks like the function that's segfaulting
(FcPatternObjectAddWithBinding) gets called from FcPatternAddDouble.
Stepping through the example with PDB, it blows up line 323 of
font/freetype.py, which calls that function:
      fontconfig.FcPatternAddDouble(pattern, FC_SIZE, c_double(size))


Any ideas (could the fontconfig version be the culprit)?  Can anyone
with a similar setup reproduce this?

Thanks!

Colin

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/pyglet-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Attachment: fc_seg_test.py
Description: Binary data

Reply via email to