Antoine Pitrou <pit...@free.fr> added the comment:

> The problem is highlighted with recursive imports:
> a module which imports another module, which imports another module,
> etc. PyMarshal_ReadLastObjectFromFile is not the only function to use
> stack-allocated buffers, there are also load_source_module,
> load_package, import_module_level, which use char buf[MAXPATHLEN+1]:
> with a MAXPATHLEN to 1024, you lose 2 or 3K every time you do a
> recursive import.

Let's assume we lose ten times 1024 bytes, that's still only 10KB. The
stack is 8MB. We are argueing about less than 1% of the total stack
size.

I just went through all of the functions highlighted in one of these
stack traces (*). The only big consumers of stack space seem to be the
stack buffer in PyMarshal_ReadLastObjectFromFile, and the various file
path buffers using MAXPATHLEN.

(*) https://bugs.launchpad.net/ubuntu/+source/python2.6/+bug/432546

And that report shows only a single thread, so I have to assume that the
8MB figure applies there.

Nevertheless, we can remove the stack buffer since it's probably
useless. It just seems unlikely to me to be the root cause of the stack
overflow.

----------

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

Reply via email to