Xavier de Gaye added the comment:

Problem b) is IMO a clear demonstration that using tstate->recursion_depth and 
the PyExc_RecursionErrorInst singleton is not the correct way to control the 
recursive calls to PyErr_NormalizeException() since the problem here is memory 
exhaustion, not recursion. One could instead abort with a Fatal Error message 
printing the type of the last exception, when the depth of the recursivity of 
PyErr_NormalizeException() exceeds let's say 128 (knowing that anyway the stack 
is protected in the functions that attempt to instantiate those exceptions). 
The normalization of an exception that fails with an exception whose 
normalization fails with an ... and this, 128 times in a row, surely this can 
be considered as a fatal error, no ?

PR 2035 eliminates the tail recursive call in PyErr_NormalizeException() and 
transforms it into a loop. This loop obviously does not involve the stack 
anymore. This is another argument that shows  that tstate->recursion_depth and 
the PyExc_RecursionErrorInst singleton which are related to the stack should 
not be used to control the recursivity of PyErr_NormalizeException() or the 
iterations of this loop.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue30697>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to