长期的Cython分裂导致Python崩溃

时间:2015-05-20 02:08:46

标签: python python-3.x cython integer-division long-long

我在test.pyx

中有以下代码
cdef class Test:
    cdef long long i

    def __cinit__(self, long long i):
        self.i = i

    def __truediv__(Test self, Test other):
        return Test(self.i / other.i)

在一个简短的python脚本中,我有这个:

import test
print('Done')

当我在编译test.pyx后运行脚本时,我得到以下输出以及Windows错误对话框“python.exe已停止工作”。

Done

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

请注意,我从不调用已编译的代码,只导入它。另请注意,崩溃仅在python脚本完成执行后发生。我注意到将 i long long 更改为 long 会导致错误消失。是否存在一些我缺少的基本内容,或者是 long long 并不总是安全的?

有关我的设置的一些信息,如果它有所作为:

操作系统:Windows 7,64位

Python版本:3.4.2,MSC v 1600 32位

Cython版本:0.22

编译器:mingw32

编辑:附加说明

  • 还在Python 2.7.9 32位上进行了测试,结果相同
  • 用/替换//给出相同的结果
  • 如果删除所有涉及除法的代码(注释掉,编译器删除等),则错误消失
  • 即使Python在完成时崩溃,编译后的代码似乎也能正常运行。

0 个答案:

没有答案