On Sun, Mar 1, 2009 at 4:48 PM, Colin Bean<[email protected]> wrote:
> 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
>


Well, to follow up on this months later, it looks like the 180.60
driver update from NVidia fixed this (and another intermittent
segfault when loading textures).  Woohoo!

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
-~----------~----~----~----~------~----~------~--~---

Reply via email to