ceval.c中的引用计数问题
我的调试python 2.5.2可执行使用py_ref_debug有问题
和py_trace_refs设置.有了我的一个脚本,我得到了:
...
致命的Python错误:Python/Ceval.c:947对象在0x2AA3F4D840的涉及负率为-26042462221760230
程序收到信号sigabrt,中止.
[切换到线程182905044128(LWP 2595)]
0x0000002A95DDE479在RAISE()中,来自/lib64/tls/libc.so.6
(gdb)p((PyObject*)0x2AA3F4D840) - > ob_type
$ 1 =(struct _typeobject *)0xDBDBDBDBDBDBDBDB
(GDB)P((PyObject*)0x2AA3F4D840) - > ob_refcnt
$ 2 = -2604246222170760230
(gdb)p((PyObject*)0x2AA3F4D840) - > _ ob_next
$ 3 =(struct _Object *)0xDBDBDBDBDBDBDBDB
(gdb)p((PyObject*)0x2AA3F4D840) - > _ ob_prev
$ 4 =(struct _Object *)0xDBDBDBDBDBDBDBDB
(GDB)
是否有任何"常见"原因可以在命令上使用这种奇怪的对象
堆栈,或者我的任何扩展模块都更有可能导致
破坏?
亲切的问候
berthold
- -
__ 地址:
g / \ l Germanischer lloyd
电话:+49-40-36149-7374-+-----+ - Vorsetzen 35 P.O.Box 111606
传真: +49-40-36149-7320 \ __/ D-20459 Hamburg D-20416 Hamburg(_@_ _)
BertholdHöllmann写道:
您的扩展程序很可能具有参考计数错误.它
看起来您要么缺少py_incref,要么有py_decref
太多了.新释放的内存充满了0xDB(请参阅对象/obmalloc.c.c
Deadbyte).
狂野的猜测:您是否使用pytypeobject w/o使用pymodule_addobject
py_incref()类型对象?
克里斯蒂安