Hi, thanks for the report.
Matěj Laitl, 21.01.2013 00:16: > Heya Cython folks, > I face a compiler crash (full log at the bottom of the mail) with Cython > 0.17.1-392-g81d3d10 (today's git). This only happens if Cython directive > binding is left to True, if set to False, the project builds and runs fine. > > Steps to reproduce: > # git clone git://github.com/strohel/PyBayes.git > # cd PyBayes > # git submodule update --init > Open support/dist_cmd_build_prepare.py, set binding to True on line 35 > # ./setup.py build > > Note that this bug is not at all a recent regression - it exists at least > since binding=True has been made default (commit 621dbe6403) - sorry for > being > that late reporting it. > > On a related note, what does the binding directive mean? I was unable to find > any info at [1] or [2]. What are the consequences of disabling it to work- > around this crash? > > [1] http://wiki.cython.org/enhancements/compilerdirectives > [2] http://docs.cython.org/src/reference/compilation.html "Binding" is a historically grown name that means that Cython uses its own Python function type instead of the one that CPython provides for C functions. That allows Cython implemented functions to support binding as methods in classes (thus the name), but generally provides them with a much more Python-like function interface, e.g. for introspection. > =============== Full Crash Log =============== > running build_ext > cythoning pybayes/filters.py to build/temp.linux- > x86_64-2.7/pyrex/pybayes/filters.c > > Error compiling Cython file: > ------------------------------------------------------------ > ... > cpdef Pdf posterior(self) > cpdef double evidence_log(self, np.ndarray yt) except? -1 > > > cdef class KalmanFilter(Filter): > cdef readonly np.ndarray A, B, C, D, Q, R > ^ > ------------------------------------------------------------ > > pybayes/filters.pxd:22:29: Compiler crash in AnalyseDeclarationsTransform > [...] > AssertionError: Cannot insert list here: body in > <Cython.Compiler.Nodes.PropertyNode object at 0x3136550> I'm puzzled how this comes to be triggered by the "binding" directive. Anyway, just as a stab in the dark, does the attached patch fix it for you? Stefan
diff -r b75ae05c8584 Cython/Compiler/Parsing.py --- a/Cython/Compiler/Parsing.py Mon Jan 21 07:50:23 2013 +0100 +++ b/Cython/Compiler/Parsing.py Mon Jan 21 08:21:40 2013 +0100 @@ -2982,7 +2982,8 @@ s.next() # 'property' name = p_ident(s) doc, body = p_suite(s, Ctx(level = 'property'), with_doc = 1) - return Nodes.PropertyNode(pos, name = name, doc = doc, body = body) + return Nodes.PropertyNode(pos, name = name, doc = doc, + body = Nodes.StatListNode(pos, stats=[body])) def p_doc_string(s): if s.sy == 'BEGIN_STRING':
_______________________________________________ cython-devel mailing list cython-devel@python.org http://mail.python.org/mailman/listinfo/cython-devel