You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Running Cython fails with 3.14.0a1 - a list attribute gets changed to None #125868
To be clear - this issue is just about running the Cython itself (i.e. pure Python code). It is not about compiled extension modules.
To reproduce
Checkout Cython from git: https://github.com/cython/cython.git
git checkout daed3bce0bf0c6fb9012170cb479f64e8b9532cd (probably not important, but let's make sure we're all definitely starting from the same point).
python3.14 cython.py Cython/Compiler/Parsing.py - this runs Cython on one of its own files
You get an output that ends with
File 'ExprNodes.py', line 8643, in analyse_types: TupleNode(Parsing.py:750:34,
is_sequence_constructor =1,
result_is_used =True,
use_managed_ref =True)
Compiler crash traceback from this point on:
File "/home/dave/Documents/programming/cython2/Cython/Compiler/ExprNodes.py", line 8643, in analyse_typesiflen(self.args) ==0:
~~~^^^^^^^^^^^TypeError: object of type 'NoneType' has no len()
To try to debug it some more I add a constructor to TupleNode (in Cython/Compiler/ExprNodes.py at line 8627) with a breakpoint:
So the the constructor call to TupleNodeargs is None. But in the function it's being called from it's a list containing a NameNode (which is what I think it should be). That's as far as I've got with debugging.
This has apparently been bisected to #122620 (but not by me).
changed the title [-]Running Cython fails with 3.14.0a1[/-][+]Running Cython fails with 3.14.0a1 - a list attribute gets changed to `None`[/+]on Oct 23, 2024
Activity
[-]Running Cython fails with 3.14.0a1[/-][+]Running Cython fails with 3.14.0a1 - a list attribute gets changed to `None`[/+]markshannon commentedon Oct 23, 2024
My guess is that #122620 is to blame.
Specifically removing this deopt https://github.com/python/cpython/pull/122620/files#diff-729a985b0cb8b431cb291f1edb561bbbfea22e3f8c262451cd83328a0936a342L2221
If a value is
NULL, then the usual invariants on keys might not apply to that key.Suppose we had a dict
{'a': 'b'}with a table looking like this:I'm not sure how such a table would come into being, but it might be possible through a convoluted sequence of additions and deletions
If a
STORE_ATTR_WITH_HINThadindex=1andkey="a"then it would change the table towhich definitely isn't legal.
leftys commentedon Oct 23, 2024
I tried to compile numpy from @markshannon fix branch and the Cython compilation suddenly worked. Thank you!
GH-125868: Fix STORE_ATTR_WITH_HINT specialization (GH-125876)
scoder commentedon Dec 5, 2024
Closing as the (reported) fix went into 3.14.0a2
pythonGH-125868: Fix STORE_ATTR_WITH_HINT specialization (pythonGH-12…