Hi,
John Krukoff wrote:
> First, uninstalled cython and upgraded to 2.1.1, just to make sure this
> wasn't already fixed, since there were notes in the changelog about XSLT
> logging. With the same method, I can still get the same crash:
>
> xmlXPathCompiledEval: evaluation failed
> Segmentation fault (core dumped)
>
> With symbols, the backtrace has a bit more information:
but still no line numbers ... Could you compile with "-O -ggdb"?
> #0 0xb76fb740 in __pyx_f_4lxml_5etree__forwardError ()
> from /usr/lib/python2.5/site-packages/lxml-2.1.1-py2.5-linux-i686.egg/lxml/etree.so
> #1 0xb76fbb12 in __pyx_f_4lxml_5etree__receiveXSLTError ()
> from /usr/lib/python2.5/site-packages/lxml-2.1.1-py2.5-linux-i686.egg/lxml/etree.so
> #2 0xb766aef9 in xsltPrintErrorContext () from /usr/lib/libxslt.so.1
> #3 0xb766b091 in xsltTransformError () from /usr/lib/libxslt.so.1
> #4 0xb768d434 in xsltValueOf () from /usr/lib/libxslt.so.1
> #5 0xb768a5ba in ?? () from /usr/lib/libxslt.so.1
> #6 0x0828d230 in ?? ()
> #7 0x082bb618 in ?? ()
> #8 0x0828d578 in ?? ()
> #9 0x085db390 in ?? ()
> #10 0x00000000 in ?? ()
Hmmm, I have no idea where in the (pretty short) _forwardError() function it
could crash, especially after having run correctly before. Also, I'm wondering
why the later stack frames do not show up. Are you sure libxslt is actually
called from lxml.etree here? Given your valgrind log, you seem to be using
other XML libraries as well. Does any of them use libxslt independently?
> I've attached the valgrind log, hopefully it's not too large for the
> mailing list.
It was. :) I won't forward it, since it's not really helpful to other readers.
> Do you want the valgrind core file too? It's 150MB. I'm
> trying to narrow down what I need to do first to get it to crash, I'll
> let you know if I come up with a simple test case as a result.
Please check any other libraries for libxslt usage first. The error log setup
of lxml.etree is global for each thread, that might already be the problem
here. If it is, it *might* be possible to remove the global setup at least for
libxslt, but I will have to look into that.
To figure out which library interferes here, you can install the debug
packages for each library you use in the setup, until you get a complete stack
trace above.
Stefan