[New-bugs-announce] [issue44917] interpreter hangs on recursion in both body and handler of a try block
Irit Katriel
report at bugs.python.org
Sat Aug 14 18:17:05 EDT 2021
New submission from Irit Katriel <iritkatriel at gmail.com>:
This was found while investigating issue44895. It may or may not be the cause of that issue.
The script below hangs on a mac (it's an extract from test_exceptions.test_recursion_in_except_handler).
-----------
import sys
count = 0
def main():
def f():
global count
count += 1
try:
f()
except RecursionError:
f()
sys.setrecursionlimit(30)
try:
f()
except RecursionError:
pass
main()
print(count)
-----------
When I kill it the traceback shows it alternating between the two recursive calls, but not in a regular pattern:
... [snipped a lot]
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
[Previous line repeated 2 more times]
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
[Previous line repeated 1 more time]
RecursionError: maximum recursion depth exceeded
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/iritkatriel/src/cpython/tt.py", line 22, in <module>
main()
^^^^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 18, in main
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
[Previous line repeated 10 more times]
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 11, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 13, in f
f()
^^^
File "/Users/iritkatriel/src/cpython/tt.py", line 7, in f
def f():
KeyboardInterrupt
----------
components: Interpreter Core
messages: 399599
nosy: iritkatriel
priority: normal
severity: normal
status: open
title: interpreter hangs on recursion in both body and handler of a try block
type: crash
versions: Python 3.11
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44917>
_______________________________________
More information about the New-bugs-announce
mailing list