Bug#676908: C program embedding python segfaults after reinitialization in subsequent call to import a script using gi.repository module

Andrey Gursky andrey.gursky at e-mail.ua
Sun Jun 10 12:13:08 UTC 2012


Package: python-gi
Version: 3.2.2-1
Severity: serious

On the pygtk page everyone is encouraged to upgrade from pygtk to
using gtk&Co through gobject introspection. The further described
behavior introduces a regression compared to pygtk.

You call Py_Initialize(), then import a python script, which contains
at least one(!) of the following imports:
from gi.repository import GLib
from gi.repository import Gtk
from gi.repository import Cairo
from gi.repository import Pango
from gi.repository import Gio
Than you call Py_Finalize();
After you repeat Py_Initialize() and try to import the script again,
it segfaults.
But there is no problems with pygtk.

Please try out this small program and if it fails for you, please
confirm the bug upstream:
https://bugzilla.gnome.org/show_bug.cgi?id=677091.

Thanks,
Andrey
-------------- next part --------------
running embedded python...
[36161 refs]
...done
running embedded python...

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff79dcc27 in PyObject_GC_UnTrack (op=0xb60da8) at ../Modules/gcmodule.c:1428
1428	../Modules/gcmodule.c: No such file or directory.
(gdb) bt
#0  0x00007ffff79dcc27 in PyObject_GC_UnTrack (op=0xb60da8) at ../Modules/gcmodule.c:1428
#1  0x00007ffff6179e1b in _base_info_dealloc (self=0xb60da8) at /home/martin/debian/pkg-gnome/build-area/pygobject-3.2.2/gi/pygi-info.c:35
#2  0x00007ffff78ec9eb in _Py_Dealloc (op=0xb60da8) at ../Objects/object.c:2243
#3  0x00007ffff78be583 in frame_dealloc (f=0xba4c10) at ../Objects/frameobject.c:458
#4  0x00007ffff78ec9eb in _Py_Dealloc (op=0xba4c10) at ../Objects/object.c:2243
#5  0x00007ffff798b355 in PyEval_EvalCodeEx (co=0xb01880, globals=0xb967f0, locals=0x0, args=0xb86088, argcount=2, kws=0x0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3264
#6  0x00007ffff78c215b in function_call (func=0xb7b8e8, arg=0xb86060, kw=0x0) at ../Objects/funcobject.c:526
#7  0x00007ffff7882182 in PyObject_Call (func=0xb7b8e8, arg=0xb86060, kw=0x0) at ../Objects/abstract.c:2529
#8  0x00007ffff789e1c1 in instancemethod_call (func=0xb7b8e8, arg=0xb86060, kw=0x0) at ../Objects/classobject.c:2578
#9  0x00007ffff7882182 in PyObject_Call (func=0x802060, arg=0xb85840, kw=0x0) at ../Objects/abstract.c:2529
#10 0x00007ffff7882e9d in PyObject_CallFunctionObjArgs (callable=0x802060) at ../Objects/abstract.c:2760
#11 0x00007ffff7923cb4 in call_attribute (self=0xb79d10, attr=0x802060, name=0xa25a60) at ../Objects/typeobject.c:5441
#12 0x00007ffff7923f7f in slot_tp_getattr_hook (self=0xb79d10, name=0xa25a60) at ../Objects/typeobject.c:5495
#13 0x00007ffff78e9e8c in PyObject_GetAttr (v=0xb79d10, name=0xa25a60) at ../Objects/object.c:1191
#14 0x00007ffff7986d65 in PyEval_EvalFrameEx (f=0xba45d0, throwflag=0) at ../Python/ceval.c:2256
#15 0x00007ffff798b2a9 in PyEval_EvalCodeEx (co=0xb78e00, globals=0xba7780, locals=0x0, args=0xba2810, argcount=0, kws=0xba2810, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3253
#16 0x00007ffff798e3c1 in fast_function (func=0xb7b798, pp_stack=0x7ffffffeca00, n=0, na=0, nk=0) at ../Python/ceval.c:4117
#17 0x00007ffff798df84 in call_function (pp_stack=0x7ffffffeca00, oparg=0) at ../Python/ceval.c:4042
#18 0x00007ffff79887a4 in PyEval_EvalFrameEx (f=0xba2670, throwflag=0) at ../Python/ceval.c:2666
#19 0x00007ffff798b2a9 in PyEval_EvalCodeEx (co=0xb83b40, globals=0xba7780, locals=0xba7780, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3253
#20 0x00007ffff79809f4 in PyEval_EvalCode (co=0xb83b40, globals=0xba7780, locals=0xba7780) at ../Python/ceval.c:667
#21 0x00007ffff79aa0e0 in PyImport_ExecCodeModuleEx (name=0x7ffffffef090 "gi.overrides.GLib", co=0xb83b40, 
    pathname=0x7ffffffeceb0 "/usr/lib/python2.7/dist-packages/gi/overrides/GLib.pyc") at ../Python/import.c:681
#22 0x00007ffff79aadfb in load_source_module (name=0x7ffffffef090 "gi.overrides.GLib", 
    pathname=0x7ffffffeceb0 "/usr/lib/python2.7/dist-packages/gi/overrides/GLib.pyc", fp=0xba2400) at ../Python/import.c:1018
#23 0x00007ffff79acad8 in load_module (name=0x7ffffffef090 "gi.overrides.GLib", fp=0xba2400, 
    pathname=0x7ffffffedf90 "/usr/lib/python2.7/dist-packages/gi/overrides/GLib.py", type=1, loader=0x0) at ../Python/import.c:1822
#24 0x00007ffff79aef41 in import_submodule (mod=0xb73198, subname=0x9a6974 "GLib", fullname=0x7ffffffef090 "gi.overrides.GLib") at ../Python/import.c:2595
#25 0x00007ffff79aea1c in ensure_fromlist (mod=0xb73198, fromlist=0xb7c240, buf=0x7ffffffef090 "gi.overrides.GLib", buflen=12, recursive=0)
    at ../Python/import.c:2506
#26 0x00007ffff79ad9a0 in import_module_level (name=0x0, globals=0x0, locals=0x0, fromlist=0xb7c240, level=-1) at ../Python/import.c:2174
#27 0x00007ffff79ada89 in PyImport_ImportModuleLevel (name=0xb52e44 "gi.overrides", globals=0x0, locals=0x0, fromlist=0xb7c240, level=-1)
    at ../Python/import.c:2188
#28 0x00007ffff79766c7 in builtin___import__ (self=0x0, args=0xb79b50, kwds=0xba22e0) at ../Python/bltinmodule.c:49
#29 0x00007ffff78e5ef4 in PyCFunction_Call (func=0xa72858, arg=0xb79b50, kw=0xba22e0) at ../Objects/methodobject.c:85
#30 0x00007ffff798ec47 in do_call (func=0xa72858, pp_stack=0x7fffffff0310, na=1, nk=1) at ../Python/ceval.c:4236
#31 0x00007ffff798dfa0 in call_function (pp_stack=0x7fffffff0310, oparg=257) at ../Python/ceval.c:4044
#32 0x00007ffff79887a4 in PyEval_EvalFrameEx (f=0xba20d0, throwflag=0) at ../Python/ceval.c:2666
#33 0x00007ffff798b2a9 in PyEval_EvalCodeEx (co=0xb099e0, globals=0xb967f0, locals=0x0, args=0xba1890, argcount=1, kws=0xba1898, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3253
#34 0x00007ffff798e3c1 in fast_function (func=0xb7bb88, pp_stack=0x7fffffff07d0, n=1, na=1, nk=0) at ../Python/ceval.c:4117
#35 0x00007ffff798df84 in call_function (pp_stack=0x7fffffff07d0, oparg=0) at ../Python/ceval.c:4042
#36 0x00007ffff79887a4 in PyEval_EvalFrameEx (f=0xba16e0, throwflag=0) at ../Python/ceval.c:2666
#37 0x00007ffff798b2a9 in PyEval_EvalCodeEx (co=0x94e1a0, globals=0x99a430, locals=0x0, args=0xb7c8f8, argcount=2, kws=0x0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3253
#38 0x00007ffff78c215b in function_call (func=0xb7d258, arg=0xb7c8d0, kw=0x0) at ../Objects/funcobject.c:526
#39 0x00007ffff7882182 in PyObject_Call (func=0xb7d258, arg=0xb7c8d0, kw=0x0) at ../Objects/abstract.c:2529
#40 0x00007ffff789e1c1 in instancemethod_call (func=0xb7d258, arg=0xb7c8d0, kw=0x0) at ../Objects/classobject.c:2578
#41 0x00007ffff7882182 in PyObject_Call (func=0x8021e0, arg=0xb79ae0, kw=0x0) at ../Objects/abstract.c:2529
#42 0x00007ffff78822ea in call_function_tail (callable=0x8021e0, args=0xb79ae0) at ../Objects/abstract.c:2561
#43 0x00007ffff78826fc in PyObject_CallMethod (o=0xb74760, name=0x7ffff7a82685 "load_module", format=0x7ffff7a82567 "s") at ../Objects/abstract.c:2638
#44 0x00007ffff79accc2 in load_module (name=0x7fffffff21c0 "gi.repository.GLib", fp=0x0, pathname=0x7fffffff10c0 "", type=9, loader=0xb74760)
    at ../Python/import.c:1877
#45 0x00007ffff79aef41 in import_submodule (mod=0x9490c8, subname=0x9a6974 "GLib", fullname=0x7fffffff21c0 "gi.repository.GLib") at ../Python/import.c:2595
#46 0x00007ffff79aea1c in ensure_fromlist (mod=0x9490c8, fromlist=0xb6bfb0, buf=0x7fffffff21c0 "gi.repository.GLib", buflen=13, recursive=0)
    at ../Python/import.c:2506
#47 0x00007ffff79ad9a0 in import_module_level (name=0x0, globals=0xba34a0, locals=0xba34a0, fromlist=0xb6bfb0, level=-1) at ../Python/import.c:2174
#48 0x00007ffff79ada89 in PyImport_ImportModuleLevel (name=0x92cd74 "gi.repository", globals=0xba34a0, locals=0xba34a0, fromlist=0xb6bfb0, level=-1)
    at ../Python/import.c:2188
#49 0x00007ffff79766c7 in builtin___import__ (self=0x0, args=0xb70b00, kwds=0x0) at ../Python/bltinmodule.c:49
#50 0x00007ffff78e5ef4 in PyCFunction_Call (func=0xa72858, arg=0xb70b00, kw=0x0) at ../Objects/methodobject.c:85
#51 0x00007ffff7882182 in PyObject_Call (func=0xa72858, arg=0xb70b00, kw=0x0) at ../Objects/abstract.c:2529
#52 0x00007ffff798d4b1 in PyEval_CallObjectWithKeywords (func=0xa72858, arg=0xb70b00, kw=0x0) at ../Python/ceval.c:3890
#53 0x00007ffff79872f3 in PyEval_EvalFrameEx (f=0xba3890, throwflag=0) at ../Python/ceval.c:2333
#54 0x00007ffff798b2a9 in PyEval_EvalCodeEx (co=0xb78720, globals=0xba34a0, locals=0xba34a0, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3253
#55 0x00007ffff79809f4 in PyEval_EvalCode (co=0xb78720, globals=0xba34a0, locals=0xba34a0) at ../Python/ceval.c:667
#56 0x00007ffff79aa0e0 in PyImport_ExecCodeModuleEx (name=0x7fffffff5a80 "gi.overrides.Gio", co=0xb78720, 
    pathname=0x7fffffff38a0 "/usr/lib/python2.7/dist-packages/gi/overrides/Gio.pyc") at ../Python/import.c:681
#57 0x00007ffff79aadfb in load_source_module (name=0x7fffffff5a80 "gi.overrides.Gio", 
    pathname=0x7fffffff38a0 "/usr/lib/python2.7/dist-packages/gi/overrides/Gio.pyc", fp=0xba1140) at ../Python/import.c:1018
#58 0x00007ffff79acad8 in load_module (name=0x7fffffff5a80 "gi.overrides.Gio", fp=0xba1140, 
    pathname=0x7fffffff4980 "/usr/lib/python2.7/dist-packages/gi/overrides/Gio.py", type=1, loader=0x0) at ../Python/import.c:1822
#59 0x00007ffff79aef41 in import_submodule (mod=0xb73198, subname=0xb6043c "Gio", fullname=0x7fffffff5a80 "gi.overrides.Gio") at ../Python/import.c:2595
#60 0x00007ffff79aea1c in ensure_fromlist (mod=0xb73198, fromlist=0xb7c2b8, buf=0x7fffffff5a80 "gi.overrides.Gio", buflen=12, recursive=0)
    at ../Python/import.c:2506
#61 0x00007ffff79ad9a0 in import_module_level (name=0x0, globals=0x0, locals=0x0, fromlist=0xb7c2b8, level=-1) at ../Python/import.c:2174
#62 0x00007ffff79ada89 in PyImport_ImportModuleLevel (name=0xb52e44 "gi.overrides", globals=0x0, locals=0x0, fromlist=0xb7c2b8, level=-1)
    at ../Python/import.c:2188
#63 0x00007ffff79766c7 in builtin___import__ (self=0x0, args=0x94f290, kwds=0xba1020) at ../Python/bltinmodule.c:49
#64 0x00007ffff78e5ef4 in PyCFunction_Call (func=0xa72858, arg=0x94f290, kw=0xba1020) at ../Objects/methodobject.c:85
#65 0x00007ffff798ec47 in do_call (func=0xa72858, pp_stack=0x7fffffff6d00, na=1, nk=1) at ../Python/ceval.c:4236
#66 0x00007ffff798dfa0 in call_function (pp_stack=0x7fffffff6d00, oparg=257) at ../Python/ceval.c:4044
#67 0x00007ffff79887a4 in PyEval_EvalFrameEx (f=0x999ec0, throwflag=0) at ../Python/ceval.c:2666
#68 0x00007ffff798b2a9 in PyEval_EvalCodeEx (co=0xb099e0, globals=0xb967f0, locals=0x0, args=0xb44d50, argcount=1, kws=0xb44d58, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3253
#69 0x00007ffff798e3c1 in fast_function (func=0xb7bb88, pp_stack=0x7fffffff71c0, n=1, na=1, nk=0) at ../Python/ceval.c:4117
#70 0x00007ffff798df84 in call_function (pp_stack=0x7fffffff71c0, oparg=0) at ../Python/ceval.c:4042
#71 0x00007ffff79887a4 in PyEval_EvalFrameEx (f=0xb44ba0, throwflag=0) at ../Python/ceval.c:2666
#72 0x00007ffff798b2a9 in PyEval_EvalCodeEx (co=0x94e1a0, globals=0x99a430, locals=0x0, args=0xa40718, argcount=2, kws=0x0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3253
#73 0x00007ffff78c215b in function_call (func=0xb7d258, arg=0xa406f0, kw=0x0) at ../Objects/funcobject.c:526
#74 0x00007ffff7882182 in PyObject_Call (func=0xb7d258, arg=0xa406f0, kw=0x0) at ../Objects/abstract.c:2529
#75 0x00007ffff789e1c1 in instancemethod_call (func=0xb7d258, arg=0xa406f0, kw=0x0) at ../Objects/classobject.c:2578
#76 0x00007ffff7882182 in PyObject_Call (func=0x9c6b60, arg=0x80fb50, kw=0x0) at ../Objects/abstract.c:2529
#77 0x00007ffff78822ea in call_function_tail (callable=0x9c6b60, args=0x80fb50) at ../Objects/abstract.c:2561
#78 0x00007ffff78826fc in PyObject_CallMethod (o=0xb74760, name=0x7ffff7a82685 "load_module", format=0x7ffff7a82567 "s") at ../Objects/abstract.c:2638
#79 0x00007ffff79accc2 in load_module (name=0x7fffffff8bb0 "gi.repository.Gio", fp=0x0, pathname=0x7fffffff7ab0 "", type=9, loader=0xb74760)
    at ../Python/import.c:1877
#80 0x00007ffff79aef41 in import_submodule (mod=0x9490c8, subname=0x814e8c "Gio", fullname=0x7fffffff8bb0 "gi.repository.Gio") at ../Python/import.c:2595
#81 0x00007ffff79aea1c in ensure_fromlist (mod=0x9490c8, fromlist=0x65a7d0, buf=0x7fffffff8bb0 "gi.repository.Gio", buflen=13, recursive=0)
    at ../Python/import.c:2506
#82 0x00007ffff79ad9a0 in import_module_level (name=0x0, globals=0x61fed0, locals=0x61fed0, fromlist=0x65a7d0, level=-1) at ../Python/import.c:2174
#83 0x00007ffff79ada89 in PyImport_ImportModuleLevel (name=0x92cd74 "gi.repository", globals=0x61fed0, locals=0x61fed0, fromlist=0x65a7d0, level=-1)
    at ../Python/import.c:2188
#84 0x00007ffff79766c7 in builtin___import__ (self=0x0, args=0x7561f8, kwds=0x0) at ../Python/bltinmodule.c:49
#85 0x00007ffff78e5ef4 in PyCFunction_Call (func=0xa72858, arg=0x7561f8, kw=0x0) at ../Objects/methodobject.c:85
#86 0x00007ffff7882182 in PyObject_Call (func=0xa72858, arg=0x7561f8, kw=0x0) at ../Objects/abstract.c:2529
#87 0x00007ffff798d4b1 in PyEval_CallObjectWithKeywords (func=0xa72858, arg=0x7561f8, kw=0x0) at ../Python/ceval.c:3890
#88 0x00007ffff79872f3 in PyEval_EvalFrameEx (f=0x8c47f0, throwflag=0) at ../Python/ceval.c:2333
#89 0x00007ffff798b2a9 in PyEval_EvalCodeEx (co=0x740a90, globals=0x61fed0, locals=0x61fed0, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, 
    defcount=0, closure=0x0) at ../Python/ceval.c:3253
#90 0x00007ffff79809f4 in PyEval_EvalCode (co=0x740a90, globals=0x61fed0, locals=0x61fed0) at ../Python/ceval.c:667
#91 0x00007ffff79aa0e0 in PyImport_ExecCodeModuleEx (name=0x7fffffffc460 "test", co=0x740a90, 
    pathname=0x7fffffffa290 "/media/backup/ostling/tests/embedding_in_c/minimal_python/test.pyc") at ../Python/import.c:681
#92 0x00007ffff79aadfb in load_source_module (name=0x7fffffffc460 "test", 
    pathname=0x7fffffffa290 "/media/backup/ostling/tests/embedding_in_c/minimal_python/test.pyc", fp=0xabd9f0) at ../Python/import.c:1018
#93 0x00007ffff79acad8 in load_module (name=0x7fffffffc460 "test", fp=0xabd9f0, 
    pathname=0x7fffffffb370 "/media/backup/ostling/tests/embedding_in_c/minimal_python/test.py", type=1, loader=0x0) at ../Python/import.c:1822
#94 0x00007ffff79aef41 in import_submodule (mod=0x7ffff7cde580, subname=0x7fffffffc460 "test", fullname=0x7fffffffc460 "test") at ../Python/import.c:2595
#95 0x00007ffff79ae3ed in load_next (mod=0x7ffff7cde580, altmod=0x7ffff7cde580, p_name=0x7fffffffc428, buf=0x7fffffffc460 "test", p_buflen=0x7fffffffc438)
    at ../Python/import.c:2415
#96 0x00007ffff79ad52e in import_module_level (name=0x0, globals=0x621c30, locals=0x621c30, fromlist=0x6381c8, level=0) at ../Python/import.c:2136
#97 0x00007ffff79ada89 in PyImport_ImportModuleLevel (name=0x928f14 "test", globals=0x621c30, locals=0x621c30, fromlist=0x6381c8, level=0)
    at ../Python/import.c:2188
#98 0x00007ffff79766c7 in builtin___import__ (self=0x0, args=0x6a9570, kwds=0x0) at ../Python/bltinmodule.c:49
#99 0x00007ffff78e5ef4 in PyCFunction_Call (func=0xa72858, arg=0x6a9570, kw=0x0) at ../Objects/methodobject.c:85
#100 0x00007ffff7882182 in PyObject_Call (func=0xa72858, arg=0x6a9570, kw=0x0) at ../Objects/abstract.c:2529
#101 0x00007ffff78822ea in call_function_tail (callable=0xa72858, args=0x6a9570) at ../Objects/abstract.c:2561
#102 0x00007ffff788245e in PyObject_CallFunction (callable=0xa72858, format=0x7ffff7a82acf "OOOOi") at ../Objects/abstract.c:2585
#103 0x00007ffff79af9b5 in PyImport_Import (module_name=0x928e80) at ../Python/import.c:2773
#104 0x0000000000400a64 in call_python () at test_embed_python.c:35
#105 0x0000000000400bad in main (argc=1, argv=0x7fffffffd868) at test_embed_python.c:57
(gdb) 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test_embed_python.c
Type: text/x-csrc
Size: 1202 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-gnome-maintainers/attachments/20120610/7f59a706/attachment.c>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.py
Type: text/x-python
Size: 288 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-gnome-maintainers/attachments/20120610/7f59a706/attachment.py>


More information about the pkg-gnome-maintainers mailing list