2016-10-17 58 views
-7

对于本页的示例: https://wiki.python.org/moin/CrashingPython#Exhausting_Resources 为什么这个案例不能在我的python 2.7中复制 为什么它可以使python崩溃?为什么python不会在这种情况下崩溃?

$ python 
Python 2.4.2 (#2, Sep 30 2005, 21:19:01) 
[GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> f = lambda: None 
>>> for i in xrange(1000000): 
...  f = f.__call__ 
... 
>>> del f 
Segmentation fault 
+3

错误一直在被修复,包括这一项。为什么应该有一个具体的解释,为什么这不能在Python 2.7中复制? –

+0

我甚至无法用Python 2.4.6重现这一点,所以这给你一个很好的范围去搜索[更改历史记录](https://hg.python.org/cpython/file/2.4/Misc/NEWS )。 –

+2

在那里,我们拥有它:http://bugs.python.org/issue532646,在Python 2.4.4中修复。 –

回答

0

这只是一个bug,请参见issue #532646

所有的软件都有bug,Python项目也不例外。它不能在2.7中复制,因为该错误已被发现并修复。

具体,你的页面中发现的文件不同的这种崩溃的bug,并在顶部状态,以便

虽然很多的努力已经进入使它很难或不可能崩溃Python解释器在正常使用情况下,有很多相当简单的方法来解释翻译。 BDFL最近在python-dev邮件列表中发布:

我并不是说它是不可解密的。我只是说如果你崩溃了,那么它就是一个错误,除非经过证实。

任何已知的,仍然悬而未决错误添加到crashers test suite。如果你关注那些测试的历史,你将能够找到更多的破坏者和他们适用的Python版本。大多数需要模糊的设置,像你的问题。

相关问题