New submission from Albert Zeyer <alb...@googlemail.com>:

Code:

```
from ast import *

globalsDict = {}

exprAst = Interactive(body=[FunctionDef(name=u'Py_Main', 
args=arguments(args=[Name(id=u'argc', ctx=Param()), Name(id=u'argv', 
ctx=Param())], vararg=None, kwarg=None, defaults=[]), 
body=[Assign(targets=[Name(id=u'argc', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_int', 
ctx=Load()), args=[Attribute(value=Name(id=u'argc', ctx=Load()), attr='value', 
ctx=Load())], keywords=[], starargs=None, kwargs=None)), 
Assign(targets=[Name(id=u'argv', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='cast', 
ctx=Load()), args=[Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_void_p', ctx=Load()), 
args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='cast', ctx=Load()), args=[Name(id=u'argv', ctx=Load()), 
Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_void_p', ctx=Load())], 
keywords=[], starargs=None, kwargs=None), attr='value', ctx=Load())], 
keywords=[], starargs=No
 ne, kwargs=None), Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='POINTER', ctx=Load()), args=[Call(func=Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='POINTER', ctx=Load()), 
args=[Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_char', 
ctx=Load())], keywords=[], starargs=None, kwargs=None)], keywords=[], 
starargs=None, kwargs=None)], keywords=[], starargs=None, kwargs=None)), 
Assign(targets=[Name(id=u'c', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_int', 
ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None)), 
Assign(targets=[Name(id=u'sts', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_int', 
ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None)), 
Assign(targets=[Name(id=u'command', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='cast', 
ctx=Load()), args=[Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), att
 r='c_void_p', ctx=Load()), 
args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], starargs=None, 
kwargs=None), attr='value', ctx=Load())], keywords=[], starargs=None, 
kwargs=None), Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='POINTER', ctx=Load()), args=[Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='c_char', ctx=Load())], keywords=[], starargs=None, 
kwargs=None)], keywords=[], starargs=None, kwargs=None)), 
Assign(targets=[Name(id=u'filename', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='cast', 
ctx=Load()), args=[Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_void_p', ctx=Load()), 
args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], starargs=None, 
kwargs=None), attr='value', ctx=Load())], keywords=[], starargs=None, 
kwargs=None), 
 Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='POINTER', 
ctx=Load()), args=[Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_char', ctx=Load())], keywords=[], starargs=None, kwargs=None)], 
keywords=[], starargs=None, kwargs=None)), Assign(targets=[Name(id=u'module', 
ctx=Store())], value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='cast', ctx=Load()), args=[Call(func=Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='c_void_p', ctx=Load()), 
args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], starargs=None, 
kwargs=None), attr='value', ctx=Load())], keywords=[], starargs=None, 
kwargs=None), Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='POINTER', ctx=Load()), args=[Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='c_char', ctx=Load())], keywords=[], starargs=None, 
kwargs=None)], keywords=[], starargs=None, kwargs=None)), Assign(targe
 ts=[Name(id=u'fp', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='cast', 
ctx=Load()), args=[Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_void_p', ctx=Load()), args=[Num(n=0)], keywords=[], starargs=None, 
kwargs=None), Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='POINTER', ctx=Load()), args=[Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='c_int', ctx=Load())], keywords=[], starargs=None, 
kwargs=None)], keywords=[], starargs=None, kwargs=None)), 
Assign(targets=[Name(id=u'p', ctx=Store())], 
value=Call(func=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='POINTER', ctx=Load()), args=[Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='c_char', ctx=Load())], keywords=[], starargs=None, 
kwargs=None), args=[], keywords=[], starargs=None, kwargs=None)), 
Assign(targets=[Name(id=u'unbuffered', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_int', 
ctx=Loa
 d()), args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], 
starargs=None, kwargs=None), attr='value', ctx=Load())], keywords=[], 
starargs=None, kwargs=None)), Assign(targets=[Name(id=u'skipfirstline', 
ctx=Store())], value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_int', ctx=Load()), 
args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], starargs=None, 
kwargs=None), attr='value', ctx=Load())], keywords=[], starargs=None, 
kwargs=None)), Assign(targets=[Name(id=u'stdin_is_interactive', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_int', 
ctx=Load()), args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], 
starargs=None, kwargs=None), attr='value', ctx=Load())], keywords=[]
 , starargs=None, kwargs=None)), Assign(targets=[Name(id=u'help_a', 
ctx=Store())], value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_int', ctx=Load()), 
args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], starargs=None, 
kwargs=None), attr='value', ctx=Load())], keywords=[], starargs=None, 
kwargs=None)), Assign(targets=[Name(id=u'version', ctx=Store())], 
value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_int', 
ctx=Load()), args=[Attribute(value=Call(func=Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], 
starargs=None, kwargs=None), attr='value', ctx=Load())], keywords=[], 
starargs=None, kwargs=None)), Assign(targets=[Name(id=u'saw_unbuffered_flag', 
ctx=Store())], value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_int', ctx=Load()), args=[Attribute(value=Call(func=Attribute(value
 =Name(id='ctypes', ctx=Load()), attr='c_uint', ctx=Load()), args=[Num(n=0L)], 
keywords=[], starargs=None, kwargs=None), attr='value', ctx=Load())], 
keywords=[], starargs=None, kwargs=None)), Assign(targets=[Name(id=u'cf', 
ctx=Store())], value=Call(func=Name(id=u'PyCompilerFlags', ctx=Load()), 
args=[], keywords=[], starargs=None, kwargs=None)), 
Expr(value=Call(func=Attribute(value=Name(id='helpers', ctx=Load()), 
attr='assign', ctx=Load()), args=[Attribute(value=Name(id=u'cf', ctx=Load()), 
attr=u'cf_flags', ctx=Load()), 
Attribute(value=Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], starargs=None, 
kwargs=None), attr='value', ctx=Load())], keywords=[], starargs=None, 
kwargs=None)), Expr(value=Call(func=Attribute(value=Name(id='helpers', 
ctx=Load()), attr='assign', ctx=Load()), args=[Name(id=u'orig_argc', 
ctx=Load()), Attribute(value=Name(id=u'argc', ctx=Load()), attr='value', 
ctx=Load())], keywords=[], starargs
 =None, kwargs=None)), Expr(value=Call(func=Attribute(value=Name(id='helpers', 
ctx=Load()), attr='assignPtr', ctx=Load()), args=[Name(id=u'orig_argv', 
ctx=Load()), Attribute(value=Call(func=Attribute(value=Name(id='ctypes', 
ctx=Load()), attr='cast', ctx=Load()), args=[Name(id=u'argv', ctx=Load()), 
Attribute(value=Name(id='ctypes', ctx=Load()), attr='c_void_p', ctx=Load())], 
keywords=[], starargs=None, kwargs=None), attr='value', ctx=Load())], 
keywords=[], starargs=None, kwargs=None)), 
Expr(value=Call(func=Name(id=u'PySys_ResetWarnOptions', ctx=Load()), args=[], 
keywords=[], starargs=None, kwargs=None)), Assert(test=Name(id='True', 
ctx=Load()), msg=None), Assert(test=Name(id='True', ctx=Load()), msg=None), 
Assert(test=Name(id='True', ctx=Load()), msg=None), Assert(test=Name(id='True', 
ctx=Load()), msg=None), Assert(test=Name(id='True', ctx=Load()), msg=None), 
Assert(test=Name(id='True', ctx=Load()), msg=None), Assert(test=Name(id='True', 
ctx=Load()), msg=None), Assert(test=Nam
 e(id='True', ctx=Load()), msg=None), Assert(test=Name(id='True', ctx=Load()), 
msg=None), Expr(value=Call(func=Attribute(value=Name(id='helpers', ctx=Load()), 
attr='assign', ctx=Load()), args=[Name(id=u'stdin_is_interactive', ctx=Load()), 
Attribute(value=Call(func=Name(id=u'Py_FdIsInteractive', ctx=Load()), 
args=[Num(n=0), Call(func=Attribute(value=Name(id='ctypes', ctx=Load()), 
attr='c_uint', ctx=Load()), args=[Num(n=0L)], keywords=[], starargs=None, 
kwargs=None)], keywords=[], starargs=None, kwargs=None), attr='value', 
ctx=Load())], keywords=[], starargs=None, kwargs=None)), 
Assert(test=Name(id='True', ctx=Load()), msg=None), Assert(test=Name(id='True', 
ctx=Load()), msg=None), Expr(value=Call(func=Name(id=u'Py_Initialize', 
ctx=Load()), args=[], keywords=[], starargs=None, kwargs=None)), 
Assert(test=Name(id='True', ctx=Load()), msg=None), Assert(test=Name(id='True', 
ctx=Load()), msg=None), Assert(test=Name(id='True', ctx=Load()), msg=None), 
Expr(value=Call(func=Name(id=u'PyS
 ys_SetArgv', ctx=Load()), args=[BinOp(left=Name(id=u'argc', ctx=Load()), 
op=Sub(), right=Name(id=u'_PyOS_optind', ctx=Load())), 
BinOp(left=Name(id=u'argv', ctx=Load()), op=Add(), 
right=Name(id=u'_PyOS_optind', ctx=Load()))], keywords=[], starargs=None, 
kwargs=None)), Assert(test=Name(id='True', ctx=Load()), msg=None), 
Assert(test=Name(id='True', ctx=Load()), msg=None), Assert(test=Name(id='True', 
ctx=Load()), msg=None), Assert(test=Name(id='True', ctx=Load()), msg=None), 
Expr(value=Call(func=Name(id=u'Py_Finalize', ctx=Load()), args=[], keywords=[], 
starargs=None, kwargs=None)), Assert(test=Name(id='True', ctx=Load()), 
msg=None), Delete(targets=[Name(id=u'fp', ctx=Del())]), 
Delete(targets=[Name(id=u'c', ctx=Del())]), Delete(targets=[Name(id=u'version', 
ctx=Del())]), Delete(targets=[Name(id=u'saw_unbuffered_flag', ctx=Del())]), 
Delete(targets=[Name(id=u'stdin_is_interactive', ctx=Del())]), 
Delete(targets=[Name(id=u'cf', ctx=Del())]), Delete(targets=[Name(id=u'argv', 
ctx=Del()
 )]), Delete(targets=[Name(id=u'filename', ctx=Del())]), 
Delete(targets=[Name(id=u'p', ctx=Del())]), Delete(targets=[Name(id=u'help_a', 
ctx=Del())]), Delete(targets=[Name(id=u'command', ctx=Del())]), 
Delete(targets=[Name(id=u'module', ctx=Del())]), 
Delete(targets=[Name(id=u'sts', ctx=Del())]), 
Delete(targets=[Name(id=u'unbuffered', ctx=Del())]), 
Delete(targets=[Name(id=u'argc', ctx=Del())]), 
Delete(targets=[Name(id=u'skipfirstline', ctx=Del())])], decorator_list=[])])

fix_missing_locations(exprAst)
compiled = compile(exprAst, "<foo>", "single")
eval(compiled, {}, globalsDict)

f = globalsDict["Py_Main"]
print(f)
```

This outputs:
SystemError: Objects/codeobject.c:64: bad argument to internal function

PyPy 1.5 outputs:
<function Py_Main at 0x0000000103520610>

I'll try to reduce the test case a bit further.

----------
messages: 140876
nosy: Albert.Zeyer
priority: normal
severity: normal
status: open
title: SystemError: Objects/codeobject.c:64: bad argument to internal function
versions: Python 2.7

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue12609>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to