IPython 与 c 扩展交互时的行为与 CPython 不同
IPython behaves differently than CPython when interacting with c extension
我开发了一个小型 python c 扩展,带有 flex 扫描器,在 CPython 中工作得非常好。我所有的测试都通过了。但是在 IPython 中,输出不同或者 IPython 死于 malloc 错误,每当我尝试与我的 c-extension 交互时。当我 运行 我的 c-extension with valgrind 时,在 Py_Initialize() 中发现了很多潜在的内存问题,但其中 none 似乎与我的代码有关。我还仔细检查了对象的引用计数。我在 OS X 和 Python 3.6.5 上使用 anaconda 任何人都知道可能导致此问题的原因或如何调试此问题?
我得到的内存错误是:
python(92795,0x7fff9ba8f380) malloc: *** error for object 0x7f9222845a40: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
好吧,这是我自己的愚蠢错误。我 Python 没有使用来自 conda env 的 c 扩展,而是我的 c 扩展的一个旧的不能正常工作的版本。
我开发了一个小型 python c 扩展,带有 flex 扫描器,在 CPython 中工作得非常好。我所有的测试都通过了。但是在 IPython 中,输出不同或者 IPython 死于 malloc 错误,每当我尝试与我的 c-extension 交互时。当我 运行 我的 c-extension with valgrind 时,在 Py_Initialize() 中发现了很多潜在的内存问题,但其中 none 似乎与我的代码有关。我还仔细检查了对象的引用计数。我在 OS X 和 Python 3.6.5 上使用 anaconda 任何人都知道可能导致此问题的原因或如何调试此问题?
我得到的内存错误是:
python(92795,0x7fff9ba8f380) malloc: *** error for object 0x7f9222845a40: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
好吧,这是我自己的愚蠢错误。我 Python 没有使用来自 conda env 的 c 扩展,而是我的 c 扩展的一个旧的不能正常工作的版本。