New submission from Armin Rigo:

The computation of `co_stacksize' by the compiler is known to give only an 
upper bound estimate.  http://bugs.python.org/issue1754094 is an example of 
fixing a "leak" where every repetition of a statement makes `co_stacksize' 
bigger by 1.  However, in the whole 3.x series (from at least 3.2), the 
following simple code, which at runtime requires about 4 or 5 stack slots, 
leaks 14(!) slots for every `try:' block.  Maybe this should be improved to 
reduce the extreme size of the leak.

def g():
    try: pass
    except ImportError as e: pass
    try: pass
    except ImportError as e: pass
    try: pass
    except ImportError as e: pass
    ...

i.e. any function that is big enough to contain 6 try: blocks in sequence will 
have its stack size overestimated by about 70.

----------
components: Interpreter Core
messages: 244552
nosy: arigo
priority: normal
severity: normal
status: open
title: co_stacksize estimate can be highly off

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

Reply via email to