
F Wolff, 19.06.2012 11:22:
Op Ma, 2012-06-18 om 19:58 +0200 skryf Stefan Behnel:
Stefan Behnel, 09.06.2012 22:17:
F Wolff, 09.06.2012 20:14:
I hope it helps! I realise some of this might be pypy bugs, but it is impossible for me to say, so I'll start here.
Thanks for testing. I've been seriously head under water for a while now, but I hope to find some time soon to tackle a couple of the main issues that are left.
I pushed a couple of changes to the master branch on github that fix or work around the most visible issues. Most importantly, threading is now disabled when compiling under PyPy as that's not currently supported by cpyext (and it only half-way fakes it). Both XPath and XSLT seem to work now, as does validation. There are still crashes in the test suite, but they are definitely getting fewer. Most test failures are now in the doctests due to different exceptions and/or error messages in PyPy etc.
I rebuilt, and things are looking substantially better. I'm able to complete the test run without a crash! Thanks!
Most failures now seem to be because of the first issue I mentioned in my previous mail, simplified to something like this:
from lxml import etree string_xpath = etree.XPath("string()") string_xpath(etree.fromstring('<a> </a>')) Traceback (most recent call last): File "<console>", line 1, in <module> File "xpath.pxi", line 462, in lxml.etree.XPath.__call__ (src/lxml/lxml.etree.c:126750) RuntimeError: maximum recursion depth exceeded
On the same line in xpath.pxi, I also saw at least once: SystemError: <StackOverflow object at 0x905d4ec>
I've seen these, too, and I've seen similar PyPy bugs that have already been worked around in Cython weeks ago, so no idea where these have crept back up from. I'll take a look.
From a quick look some others seem to be related to .iterchildren() or .iterdescendants(), but are not consistent (different number of failures between test runs of unchanged code), so I'm not sure what to report there right now.
Did you use yesterday's really, really latest github Cython? There's a bug in PyPy I needed to work around that is related to iteration in extension type subclasses (i.e. the exact case above). Stefan