gpt4 book ai didi

python - 递归日志记录使 Python 3 中的解释器崩溃

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:03 25 4
gpt4 key购买 nike

以下代码记录错误并调用自身导致堆栈溢出并最终在 Python 3.6 中进行核心转储。

>>> import logging
>>> def rec():
... logging.error("foo")
... rec()
>>> rec()

[1] 101641 abort (core dumped) python3

FTR,这不会使 Python 2.7 崩溃。

在 Python 3.6 中附加错误(压缩):

ERROR:root:foo
...
--- Logging error ---
Traceback (most recent call last):
...
RecursionError: maximum recursion depth exceeded in comparison
...
Fatal Python error: Cannot recover from stack overflow.
...
[1] 101641 abort (core dumped) python3

python 2.7:

RuntimeError: maximum recursion depth exceeded

但是 Python 2.7 中没有核心转储。

FTR,如果日志级别设置为 logging.ERROR,上述 Python 3.6 的错误将起作用。其他日志级别也是如此。

更新:我已经登录 issue与 Python 社区跟进。

最佳答案

您的代码最终将导致RuntimeError(python 2.7)或RecursionError(python 3.6)。这是因为两者的递归深度都限制为 1000:

>>>import sys
>>>sys.getrecursionlimit()
1000

如果它实际上导致了堆栈溢出引起的崩溃,一个可能的原因是递归深度限制已被修改。

关于python - 递归日志记录使 Python 3 中的解释器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55116805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com