Bug in inspect.py for python 2.3?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Fernando Perez

    #1

    Bug in inspect.py for python 2.3?

    Hi all,

    IPython has suffered quite a few problems with the inspect module in python
    2.3. For these, unfortunately all I've been able to do is guard with
    overreaching except clauses, as I had not been able to find small,
    reproducible examples to pass on to the devs. But today I got a crash report
    from a user and I've been able to replicate this crash with a tiny script
    which does not depend on ipython at all.

    I'd like to hear from some of our resident gurus if this is really an
    inspect.py bug before I bother the developers with a formal bug report on SF.
    The script below illustrates the problem. Just run it, and you'll get a
    traceback coming from inside inspect.py itself. For now, I've added a guard
    in ipython against this failure mode, but it would be nice to fix the problem
    at the source if there really is one.

    Best,

    f


    #!/usr/bin/env python
    """This script triggers an exception in inspect.py

    This exception was crashing ipython for the input line:

    (lambda(x): x[0] + x[1])(3)

    when IPython tried to print the traceback for the user. As far as I can tell,
    it's a bug in inspect, since for all other kinds of calls of invalid user
    input, ipython works fine. But perhaps it's my fault, I'm not sure."""

    import sys
    import inspect

    try:
    # This line is invalid, but we should be able to build exception info for
    # it with the usual tools.
    (lambda(x): x[0] + x[1])(3)
    except:
    etb = sys.exc_info()[2]
    records = inspect.getinne rframes(etb)

    for frame, file, lnum, func, lines, index in records:

    # The getargvalues call below blows up with an exception in inspect.py
    args, varargs, varkw, locals = inspect.getargv alues(frame)

    print 'args:',args


  • Peter Otten

    #2
    Re: Bug in inspect.py for python 2.3?

    Fernando Perez wrote:
    [color=blue]
    > IPython has suffered quite a few problems with the inspect module in
    > python
    > 2.3. For these, unfortunately all I've been able to do is guard with
    > overreaching except clauses, as I had not been able to find small,
    > reproducible examples to pass on to the devs. But today I got a crash
    > report from a user and I've been able to replicate this crash with a tiny
    > script which does not depend on ipython at all.
    >
    > I'd like to hear from some of our resident gurus if this is really an
    > inspect.py bug before I bother the developers with a formal bug report on
    > SF.
    > The script below illustrates the problem. Just run it, and you'll get a
    > traceback coming from inside inspect.py itself. For now, I've added a
    > guard in ipython against this failure mode, but it would be nice to fix
    > the problem at the source if there really is one.[/color]

    That is indeed a bug, and it is fixed as of
    http://sourceforge.net/tracker/index...70&atid=305470

    Minimal example:

    [Python 2.3.3][color=blue][color=green][color=darkred]
    >>> def f(a): pass[/color][/color][/color]
    ....[color=blue][color=green][color=darkred]
    >>> def g((a)): pass[/color][/color][/color]
    ....[color=blue][color=green][color=darkred]
    >>> inspect.getargs (f.func_code)[/color][/color][/color]
    (['a'], None, None)[color=blue][color=green][color=darkred]
    >>> inspect.getargs (g.func_code)[/color][/color][/color]
    Traceback (most recent call last):
    File "<stdin>", line 1, in ?
    File "/usr/lib/python2.3/inspect.py", line 624, in getargs
    remain[-1] = remain[-1] - 1
    IndexError: list index out of range

    [Python 2.4][color=blue][color=green][color=darkred]
    >>> import inspect
    >>> def g((a)): pass[/color][/color][/color]
    ....[color=blue][color=green][color=darkred]
    >>> inspect.getargs (g.func_code)[/color][/color][/color]
    ([['a']], None, None)


    By the way, I didn't know that sublists of length one are allowed in a
    function's parameter list. Certainly they don't make much sense...

    Peter


    Comment

    • Fernando Perez

      #3
      Re: Bug in inspect.py for python 2.3?

      Peter Otten wrote:
      [color=blue]
      > Fernando Perez wrote:
      >[/color]
      [color=blue][color=green]
      >> I'd like to hear from some of our resident gurus if this is really an
      >> inspect.py bug before I bother the developers with a formal bug report on
      >> SF.
      >> The script below illustrates the problem. Just run it, and you'll get a
      >> traceback coming from inside inspect.py itself. For now, I've added a
      >> guard in ipython against this failure mode, but it would be nice to fix
      >> the problem at the source if there really is one.[/color]
      >
      > That is indeed a bug, and it is fixed as of
      >[/color]
      http://sourceforge.net/tracker/index...70&atid=305470

      Great, many thanks for the info. This way I don't bother the devs with
      unnecessary bug triage.

      Regards,

      f

      Comment

      Working...