New GitHub issue #118978 from richard-hajek:<br>
<hr>
<pre>
# Bug report
### Bug description:
I tried to mess with CPython and try to generate the longest possible sequence of tracebacks.
```python
class CustomException(Exception):
pass
def recurse(depth=0):
try:
raise CustomException()
except CustomException:
recurse(depth + 1)
def main():
recurse()
```
I expected a chain of "During handling ...."
```
Traceback (most recent call last):
File "/home/meowxiik/Cloud/Projects/bully-python/src/bully_python/__init__.py", line 8, in recurse
raise CustomException()
CustomException
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/meowxiik/Cloud/Projects/bully-python/src/bully_python/__init__.py", line 8, in recurse
raise CustomException()
CustomException
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/meowxiik/Cloud/Projects/bully-python/src/bully_python/__init__.py", line 8, in recurse
raise CustomException()
CustomException
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/meowxiik/Cloud/Projects/bully-python/src/bully_python/__init__.py", line 8, in recurse
raise CustomException()
CustomException
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/meowxiik/Cloud/Projects/bully-python/src/bully_python/__init__.py", line 8, in recurse
raise CustomException()
CustomException
[rest ommited]
```
Instead of that I got
```
object address : 0x7c3def3ef340
object refcount : 3
object type : 0x7c3df14aa958
object type name: RecursionError
object repr : RecursionError('maximum recursion depth exceeded')
lost sys.stderr
```
This happens around stack size 1000. Python's memory is fine, if I increase the sys.setrecursionlimit, I can safely push the stack into much larger numbers. I don't know what `lost sys.stderr` means, I can do `print("whatever", sys.stderr)` if I catch this exception easily.
The CPython traceback looks like this
```gdb
(gdb) bt
#0 _PyObject_Dump (op=0x7ffff5cdec20) at Objects/object.c:489
#1 0x00007ffff6891421 in _PyErr_Display (file=0x7ffff5cc59a0, unused=<optimized out>, value=0x7ffff5cdec20, tb=<optimized out>) at Python/pythonrun.c:1526
#2 0x00007ffff6891586 in PyErr_Display (unused=<optimized out>, value=0x7ffff5cdec20, tb=0x7ffff5c45100) at Python/pythonrun.c:1556
#3 0x00007ffff6895299 in sys_excepthook_impl (value=0x7ffff5cdecd0, traceback=0x79, module=<optimized out>, exctype=<optimized out>) at ./Python/sysmodule.c:772
#4 sys_excepthook (module=<optimized out>, args=0x7fffffffcc00, nargs=<optimized out>) at ./Python/clinic/sysmodule.c.h:102
#5 0x00007ffff6996400 in cfunction_vectorcall_FASTCALL (func=0x7ffff5d441d0, args=0x7fffffffcc00, nargsf=<optimized out>, kwnames=0x0) at Objects/methodobject.c:422
#6 0x00007ffff6966643 in _PyObject_VectorcallTstate (tstate=0x7ffff7e33f68 <_PyRuntime+459656>, callable=0x7ffff5d441d0, args=0x7fffffffcc00, nargsf=3, kwnames=0x0) at ./Include/internal/pycore_call.h:92
#7 0x00007ffff6a87ca7 in _PyObject_FastCallTstate (tstate=0x7ffff5cdec20, func=0x7ffff5cdecd0, args=0x79, nargs=0) at ./Include/internal/pycore_call.h:116
#8 0x00007ffff689118b in _PyErr_PrintEx (tstate=0x7ffff7e33f68 <_PyRuntime+459656>, set_sys_last_vars=1) at Python/pythonrun.c:807
#9 0x00007ffff6890467 in PyErr_PrintEx (set_sys_last_vars=1) at Python/pythonrun.c:845
#10 PyErr_Print () at Python/pythonrun.c:851
#11 _PyRun_SimpleFileObject (fp=0x83a2d0, filename=0x7ffff5cf9680, closeit=<optimized out>, flags=0x7fffffffcce0) at Python/pythonrun.c:439
#12 0x00007ffff6890046 in _PyRun_AnyFileObject (fp=0x83a2d0, filename=0x7ffff5cf9680, closeit=1, flags=0x7fffffffcce0) at Python/pythonrun.c:78
#13 0x00007ffff689b734 in pymain_run_file_obj (program_name=0x7ffff5cf97d0, filename=0x7ffff5cf9680, skip_source_first_line=0) at Modules/main.c:360
#14 0x00007ffff689b4c2 in pymain_run_file (config=0x7ffff7dd6b48 <_PyRuntime+77672>) at Modules/main.c:379
#15 0x00007ffff6b598b0 in pymain_run_python (exitcode=0x7fffffffcddc) at Modules/main.c:629
#16 Py_RunMain () at Modules/main.c:709
#17 0x00007ffff689b055 in pymain_main (args=<optimized out>) at Modules/main.c:739
#18 0x00007ffff689b0b7 in Py_BytesMain (argc=<optimized out>, argv=0x7ffff5cdecd0) at Modules/main.c:763
#19 0x00007ffff6439c88 in __libc_start_call_main (main=main@entry=0x600000 <main>, argc=argc@entry=2, argv=argv@entry=0x7fffffffcfc8) at ../sysdeps/nptl/libc_start_call_main.h:58
#20 0x00007ffff6439d4c in __libc_start_main_impl (main=0x600000 <main>, argc=2, argv=0x7fffffffcfc8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffcfb8)
at ../csu/libc-start.c:360
#21 0x00000000006000a9 in _start ()
(gdb)
```
I am unfamiliar with the conventions of CPython, if this exit is not considered a bug, please close this issue.
### CPython versions tested on:
3.12
### Operating systems tested on:
Linux
</pre>
<hr>
<a href="https://github.com/python/cpython/issues/118978">View on GitHub</a>
<p>Labels: type-bug</p>
<p>Assignee: </p>