[ python-Bugs-876278 ] Unbounded recursion in modulefinder

SourceForge.net noreply at sourceforge.net
Tue Mar 30 14:10:43 EST 2004


Bugs item #876278, was opened at 2004-01-13 19:46
Message generated for change (Comment added) made by theller
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=876278&group_id=5470

Category: Python Library
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Thomas Heller (theller)
Assigned to: Just van Rossum (jvr)
Summary: Unbounded recursion in modulefinder

Initial Comment:
modulefinder goes into unbounded recursion when a
module named 'path.py', containing 'import os', is on
sys.path.

Last part of the traceback:
  File "c:\python23\lib\modulefinder.py", line 255, in
import_module
    m = self.load_module(fqname, fp, pathname, stuff)
  File "c:\python23\lib\modulefinder.py", line 285, in
load_module
    self.scan_code(co, m)
  File "c:\python23\lib\modulefinder.py", line 342, in
scan_code
    self._safe_import_hook(name, m, fromlist)
  File "c:\python23\lib\modulefinder.py", line 300, in
_safe_import_hook
    self.import_hook(name, caller)
  File "c:\python23\lib\modulefinder.py", line 124, in
import_hook
    q, tail = self.find_head_package(parent, name)
  File "c:\python23\lib\modulefinder.py", line 166, in
find_head_package
    q = self.import_module(head, qname, parent)
  File "c:\python23\lib\modulefinder.py", line 237, in
import_module
    self.msgin(3, "import_module", partname, fqname,
parent)
RuntimeError: maximum recursion depth exceeded

Running modulefinder with the '-x os.path' command line
option prevents the recursion.

This is not really a contrived situation, there's a
possibly useful path.py module from Jason Orendorff at
<http://www.jorendorff.com/articles/python/path>


----------------------------------------------------------------------

>Comment By: Thomas Heller (theller)
Date: 2004-03-30 21:10

Message:
Logged In: YES 
user_id=11105

I think I have found something, but I still have to check if
this cures the original problem.

Imagine an (possibly empty) module foo.py.  Without this
patch, modulefinder would even find 'import foo.foo.foo'
modules.

The assert in the second hunk is commented out, although I
think it should be correct.

Just, any comments?

----------------------------------------------------------------------

Comment By: Thomas Heller (theller)
Date: 2004-03-25 22:09

Message:
Logged In: YES 
user_id=11105

It has something to do with os.path.  Adding 'os.path' to
the excludes list, the problem does not appear.

Adding print statements it seems that mf is looking for 
os.os.os.os.os.......something, it seems that it recurses
without noting that something failed.

If I had to fix this myself, I probably had to first step
through these imports with the C debugger, and then through mf.

----------------------------------------------------------------------

Comment By: Just van Rossum (jvr)
Date: 2004-03-25 21:53

Message:
Logged In: YES 
user_id=92689

Hm, not really. Do you have any idea what's causing it?

----------------------------------------------------------------------

Comment By: Thomas Heller (theller)
Date: 2004-03-25 21:06

Message:
Logged In: YES 
user_id=11105

<ping> Just, do you have time to look into this?

----------------------------------------------------------------------

Comment By: Thomas Heller (theller)
Date: 2004-01-28 21:36

Message:
Logged In: YES 
user_id=11105

Just, do you have time to look into this?

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=876278&group_id=5470



More information about the Python-bugs-list mailing list