[ python-Bugs-1166714 ] [ast branch] fatal error when compiling
test_bool.py
SourceForge.net
noreply at sourceforge.net
Tue Apr 19 07:26:58 CEST 2005
Bugs item #1166714, was opened at 2005-03-19 16:14
Message generated for change (Comment added) made by bcannon
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1166714&group_id=5470
Category: Parser/Compiler
Group: AST
Status: Open
Resolution: None
Priority: 5
Submitted By: John Ehresman (jpe)
Assigned to: Brett Cannon (bcannon)
Summary: [ast branch] fatal error when compiling test_bool.py
Initial Comment:
When using the ast-branch compiler, python exits with a
fatal error when compiling test_bool.py or the
symplified test case that I'll attach.
The immediate problem is that when the compiler is in
make_closure after compiling the lambda, self is found
to be a LOCAL reference type and make_closure assumes
it's a FREE reference if it's not a CELL reference in
the enclosing scope.
I don't know if self is supposed to be a LOCAL
reference or if make_closure should handle LOCAL
references.
----------------------------------------------------------------------
>Comment By: Brett Cannon (bcannon)
Date: 2005-04-18 22:26
Message:
Logged In: YES
user_id=357491
John, on line 45 of the patch, which becomes line 580 in
Python/symtable.c, you call PyDict_Update() with three
arguments. Is 'local' supposed to be an argument, or is
'free' the erroneous one?
If I change it so that 'local' is removed then the tests die
on test_unicode (although a ton of other tests fail).
----------------------------------------------------------------------
Comment By: John Ehresman (jpe)
Date: 2005-03-22 17:22
Message:
Logged In: YES
user_id=22785
Forgot to add the patch
----------------------------------------------------------------------
Comment By: John Ehresman (jpe)
Date: 2005-03-22 17:21
Message:
Logged In: YES
user_id=22785
The attached patch seems to fix this by creating a
dictionary for each scope's free vars and only propagating
up the ones that aren't satisfied by a binding. With this
and the other patches, the test suite runs w/o segfaulting
up through test_unicode.
----------------------------------------------------------------------
Comment By: John Ehresman (jpe)
Date: 2005-03-22 13:37
Message:
Logged In: YES
user_id=22785
The issue seems to be that in symtable_analyze, a free
dictionary is created for the entire module and if a name is
found to be free in any function, it is not converted from a
LOCAL to a CELL is any context seen afterwards. I think the
free variables need to be recorded on a function-by-function
basis.
----------------------------------------------------------------------
Comment By: Brett Cannon (bcannon)
Date: 2005-03-22 12:34
Message:
Logged In: YES
user_id=357491
An short example of the failure::
def outer(a):
def first(): a
def last(a): pass
This leads to a fatal Python error. The issue is having a being a local or
parameter (can make 'a' be 'a = 1' and not a parameter and still have it
fail), the first closure reference it, and then the second one use it as a
parameter.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1166714&group_id=5470
More information about the Python-bugs-list
mailing list