Bug in inspect.py for python 2.3?

Fernando Perez fperez528 at yahoo.com
Fri Dec 17 23:33:24 CET 2004

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.



#!/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

    # 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)
    etb = sys.exc_info()[2]
    records = inspect.getinnerframes(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.getargvalues(frame)
        print 'args:',args

More information about the Python-list mailing list