【发布时间】:2023-03-02 23:50:02
【问题描述】:
我并不主张这将是一个好主意,但我发现您可以通过在足够大的输入字符串上运行 eval 来使 Python 崩溃(检查 2.7 和 3.2):
def kill_python(N):
S = '+'.join((str(n) for n in xrange(N)))
return eval(S)
在我的计算机上可以很好地生成S,但是对于大约N>74900 的值,Python 将失败并显示Segmentation fault (core dumped)。解释器可以处理的字符串(或解析树)的长度是否有限制?
注意:我不需要这样做,对我来说这是一个更深层次的问题,反映出我对盒子里发生的事情一无所知。我想了解为什么 Python 在这里失败了,而且是灾难性的(为什么不抛出异常?)
【问题讨论】:
-
IIRC,Python 解释器段错误在任何情况下都被认为是一个错误,不应该发生 - 这可能值得bug report。
-
@Lattyware:在大多数情况下,不是全部。但是这个应该被认为是一个错误。
-
有趣的是,
sum(xrange(75000))似乎工作得很好 -
@SvenMarnach 想到了一些例外(最明显的是导致 CPython 崩溃的扩展模块),但由于这是核心功能,我认为 - 正如你所说 - 这可能是一个错误。
-
这里的答案也可以看到:stackoverflow.com/questions/5177432/…
标签: python segmentation-fault eval