glibc检测到***python:double free或corruption(!上一个)SWIG

2024-04-28 10:59:17 发布

您现在位置:Python中文网/ 问答频道 /正文

< >在为我的C++算法编写一个包装器之后,当我在导入模块后退出Python解释器时,我经常会得到这个错误:

    $ python
    iPython 2.5.6 (r256:88840, Mar 10 2012, 14:05:15) 
    [GCC 4.4.3] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>>from algol import *
    >>> 
    *** glibc detected *** python: double free or corruption (!prev): 0x0000000001e42430 ***

然后我必须按Ctrl+C键才能恢复控制。。。怎么回事?

我正在运行以下命令来构建我的SWIG包装器:

$NAME=algol
swig -c++ -python $NAME.i
g++ -fpic -c $NAME.cpp $NAME.hpp $NAME\_wrap.cxx -I/usr/local/include/python2.5
g++ -Xlinker -zmuldefs -shared $NAME.o $NAME\_wrap.o -o _$NAME.so

我的swig接口文件只是algol.hpp的一部分:

%module algol
%{
#include "algol.hpp"
%}
%include "algol.hpp"

你觉得这个怎么样?:秒

编辑:此处附加示例源代码->;http://pastebin.com/q210vEAs


Tags: 模块orname算法include错误ipython解释器
1条回答
网友
1楼 · 发布于 2024-04-28 10:59:17

what is happening?

正是消息所说的:要么是某些代码执行了双重释放,要么是其他堆损坏。

正如awoodland所建议的,在Valgrind下运行python,并查看哪里发生了损坏或double free。

相关问题 更多 >