New submission from Irit Katriel <[email protected]>:
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 <[email protected]>
<https://bugs.python.org/issue44917>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com