[Python-bugs-list] [ python-Bugs-443866 ] Evaluating func_code causing core dump
noreply@sourceforge.net
noreply@sourceforge.net
Thu, 11 Jul 2002 11:11:34 -0700
Bugs item #443866, was opened at 2001-07-23 17:48
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=443866&group_id=5470
Category: Python Interpreter Core
Group: Python 2.2
>Status: Closed
Resolution: Later
Priority: 3
Submitted By: Jonathan Hogg (jhogg)
Assigned to: Jeremy Hylton (jhylton)
Summary: Evaluating func_code causing core dump
Initial Comment:
Python 2.2a1 (#1, Jul 19 2001, 18:18:51)
[GCC 2.96 20000731 (Red Hat Linux 7.1 2.96-81)] on
linux2
The intepreter dies hard if you directly evaluate the
func_code of a function that has a closure. E.g.:
-----
def func1():
return lambda: 4 + y
f = func1()
print "Ugly test 1:", eval( f.func_code, {'y': 38} )
def func2(x):
return lambda: x + y
f = func2(4)
print "Ugly test 2:", eval( f.func_code, {'y': 38} )
-----
The second eval will cause a core dump on UNIX. The
offending code is in PyEval_EvalCodeEx() of ceval.c
line 2466. This loop attempts to match free vars
against the closure, but the closure is NULL if the
function is called with eval.
I know this is very broken usage of the interpreter,
but it should die more cleanly than a core dump ;-)
----------------------------------------------------------------------
>Comment By: Jeremy Hylton (jhylton)
Date: 2002-07-11 18:11
Message:
Logged In: YES
user_id=31392
Added feature request to pep 42.
----------------------------------------------------------------------
Comment By: Skip Montanaro (montanaro)
Date: 2002-03-10 01:44
Message:
Logged In: YES
user_id=44345
just a reminder that this appears to be fixed -skip
----------------------------------------------------------------------
Comment By: Guido van Rossum (gvanrossum)
Date: 2001-12-12 05:29
Message:
Logged In: YES
user_id=6380
Jeremy, since you claimed this to be fixed, is there a
reason to keep this bug report open? If you want a feature,
please open a (new, please!) feature request.
----------------------------------------------------------------------
Comment By: Jeremy Hylton (jhylton)
Date: 2001-07-30 21:53
Message:
Logged In: YES
user_id=31392
It might be useful to extend eval() with a means to specify
bindings from free variables. It's not at all clear how to
do this under the current implementation, which refers to
free variables using integer indexes assigned at compile
time.
----------------------------------------------------------------------
Comment By: Jeremy Hylton (jhylton)
Date: 2001-07-30 21:51
Message:
Logged In: YES
user_id=31392
Fixed in rev 2.219 of bltinmodule.c
----------------------------------------------------------------------
Comment By: Tim Peters (tim_one)
Date: 2001-07-24 22:35
Message:
Logged In: YES
user_id=31435
Assigned to Jeremy in the hopes this will speed his return
to us <wink>.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=443866&group_id=5470