PyType_IsSubtype 的分段错误

Segmentation fault with PyType_IsSubtype

在 gdb 中调试 C 扩展时出现以下错误

Program received signal SIGSEGV, Segmentation fault.
PyType_IsSubtype (a=0xc0089ca71d1afbb6, b=0x7fffed5441e0) at Objects/typeobject.c:1150
1150    Objects/typeobject.c: No such file or directory.
        in Objects/typeobject.c

到目前为止,我所发现的只是关于 Debian 6 中 Python 3.4 的错误报告。

使用:Python 2.7.6/CentOS 6.6

我解决了。在我的 C 扩展代码中,我创建了一些对象:

PyArrayObject *py_u2r, *py_u2l, *py_u2s;

py_u2r= (PyArrayObject *) PyArray_FromDims(2,dims,NPY_CDOUBLE);
py_u2l= (PyArrayObject *) PyArray_FromDims(2,dims,NPY_CDOUBLE);
py_u2s= (PyArrayObject *) PyArray_FromDims(2,dims,NPY_CDOUBLE);

唯一的问题是我没有 return 正确地处理它们。所以,我刚刚添加了以下 return 行,它现在正在运行:

return Py_BuildValue("OOO", py_u2r, py_u2l, py_u2s);

在这个 link 中,我了解了 Py_BuildValue 语法,这非常简单。