[lxml-dev] python crashes in xmlDictFree inside Zope
Stefan Behnel
stefan_ml at behnel.de
Thu May 31 15:29:06 CEST 2007
Hi Eric,
Eric Tiffany wrote:
> OK, some more info. If I use the builtin libxml2 (2.6.16) libs from
> Apple, rather than the 2.6.28 version from MacPorts, then I don’t get
> these errors crashing Python/Zope.
That's expected, lxml switches off threading support for this version. It's
the same as doing "--without-threading". That's why I was puzzled when you
said --without-threading doesn't help you.
> However, the lxml parsing/validation
> doesn’t seem to work correctly.
That's expected, too, XMLSchema ist still under development and definitely was
at the time.
> So, it seems that Apple has built their libs in a more friendly way, but
> I’m now wondering whether there is some known issue with using lxml with
> libxml2 2.6.16.
>
> I’m continuing to investigate.
Please do. It hard for me to come up with a solution without being able to
reproduce the problem.
Stefan
> On 5/30/07 2:14 PM, "Eric Tiffany" <etiffany at alum.mit.edu> wrote:
>
> Sorry for the delay in responding -- been on vacation in Italy.
> Responses inline. I am quite mystified at this point.
>
> On 5/21/07 2:21 AM, "Stefan Behnel" <stefan_ml at behnel.de> wrote:
>
> > Hi,
> >
> > Eric Tiffany wrote:
> >> I have been prototyping some XMLSchema parsing/validating using lxml
> >> 1.3beta.
> >>
> >> Everthing works great from python 2.4.4 started from the command
> line, or
> >> running from inside Eclipse.
> >>
> >> However, when I moved my code over to my Plone product, python
> crashes when
> >> Zope is initializing the product. I am creating my XMLSchema
> object there.
> >> [...]
> >
> > Is this the Python version?
>
> For some reason, the python reports its version incorrectly in the
> crashdump. It is actually 2.4.4.
>
> >
> > Is there any way to detect MacOS-X at the C level? In that case, we
> could try
> > to disable thread concurrency support completely for this platform
> - in case
> > that's the source of the segfault. You can try to see if this would
> fix the
> > problem by passing the option "--without-threading" to setup.py
> when building
> > lxml. Could you please try that with your current setup and report
> back to the
> > list?
>
> There are certainly ways to detect MacOS at compile-time, though I'm
> not sure of the details. I get this from the shell:
>
> $ uname -a
> Darwin etmac.local 8.9.1 Darwin Kernel Version 8.9.1: Thu Feb 22
> 20:55:00 PST 2007; root:xnu-792.18.15~1/RELEASE_I386 i386 i386
>
> I have attempted to build from SVN using --without-threading using
>
> $ make clean
> $ python setup.py build --without-threading
> $ sudo python setup.py install
>
> (interestingly, it makes an egg called
> lxml-1.3beta-py2.4-macosx-10.3-i386.egg even though the OS version
> 10.4.9 not 10.3, but whatever).
>
> Also, I see a problem with the self tests regarding
> test_module_HTML_unicode, but I'll report that elsewhere.
>
> >
> > Another question: are you using a custom parser (i.e. passing a second
> > argument to the parse() function) here or is it the default parser that
> > crashes here?
>
> It is the default parser. And it is still crashing inside Zope even
> with the --without-threading. Here is my code:
>
> schemaPath =
> "/Applications/Plone-2.5.2/Instance/Products/xtend/xtend/schedules.xsd"
> print >> sys.stderr, "Loading schema doc from ", schemaPath
> schemaDoc = etree.parse(schemaPath) print >> sys.stderr, "creating
> XMLSchema ..." schemaTree = etree.XMLSchema(schemaDoc) print >>
> sys.stderr, "Trying validation"
>
> And here is the output (when running inside Zope):
>
> Loading schema doc from
> /Applications/Plone-2.5.2/Instance/Products/xtend/xtend/schedules.xsd
> creating XMLSchema ...
> Bus error
>
> So it seems pretty clear that it is croaking while trying to do the
> XMLSchema construction.
>
> Inside a python shell, that code runs fine. In both environments
> (zope and shell) I have
>
> lxml.etree: (1, 3, -1, 43887)
> libxml used: (2, 6, 28)
> libxml compiled: (2, 6, 28)
> libxslt used: (1, 1, 20)
> libxslt compiled: (1, 1, 20)
>
>
> Here is the thread backtrace for the thread that crashed:
>
> Thread 1 Crashed:
> 0 <<00000000>> 0xffff07c7 __memcpy + 39 (cpu_capabilities.h:228)
> 1 libSystem.B.dylib 0x9000b569 __sfvwrite + 409
> 2 libSystem.B.dylib 0x9001063d __vfprintf + 19692
> 3 libSystem.B.dylib 0x90011428 vfprintf + 91
> 4 libxml2.2.dylib 0x91befd3b xmlGenericErrorDefaultFunc + 75
> 5 libxml2.2.dylib 0x0354bad1 xmlSchemaCheckFacet + 709
> 6 libxml2.2.dylib 0x0354c020
> xmlSchemaFixupSimpleTypeStageTwo + 927
> 7 libxml2.2.dylib 0x0355175b xmlSchemaFixupComponents + 4054
> 8 libxml2.2.dylib 0x03552207 xmlSchemaParse + 290
> 9 etree.so 0x06464039
> __pyx_f_5etree_9XMLSchema___init__ + 980 (etree.c:38191)
> 10 org.python.python 0x0025283e type_call + 166 (typeobject.c:435)
> 11 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 12 org.python.python 0x0027e397 PyEval_EvalFrame + 16838
> (ceval.c:3776)
> 13 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 14 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 15 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 16 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 17 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 18 org.python.python 0x00214c90 instance_call + 90
> (classobject.c:2087)
> 19 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 20 org.python.python 0x0027e69c PyEval_EvalFrame + 17611
> (ceval.c:3845)
> 21 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 22 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 23 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 24 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 25 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 26 org.python.python 0x00214c90 instance_call + 90
> (classobject.c:2087)
> 27 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 28 org.python.python 0x0027e69c PyEval_EvalFrame + 17611
> (ceval.c:3845)
> 29 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 30 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 31 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 32 org.python.python 0x0027e69c PyEval_EvalFrame + 17611
> (ceval.c:3845)
> 33 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 34 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 35 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 36 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 37 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 38 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 39 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 40 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 41 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 42 org.python.python 0x0027e69c PyEval_EvalFrame + 17611
> (ceval.c:3845)
> 43 org.python.python 0x0027ebaa PyEval_EvalFrame + 18905
> (ceval.c:3651)
> 44 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 45 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 46 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 47 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 48 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 49 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 50 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 51 org.python.python 0x0027e69c PyEval_EvalFrame + 17611
> (ceval.c:3845)
> 52 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 53 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 54 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 55 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 56 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 57 org.python.python 0x0027e69c PyEval_EvalFrame + 17611
> (ceval.c:3845)
> 58 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 59 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 60 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 61 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 62 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 63 org.python.python 0x0027e69c PyEval_EvalFrame + 17611
> (ceval.c:3845)
> 64 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 65 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 66 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 67 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 68 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 69 org.python.python 0x0027944a PyEval_CallObjectWithKeywords +
> 112 (ceval.c:3435)
> 70 _Acquisition.so 0x0151e9ac CallMethodO + 60
> (_Acquisition.c:97)
> 71 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 72 org.python.python 0x0027944a PyEval_CallObjectWithKeywords +
> 112 (ceval.c:3435)
> 73 org.python.python 0x002715a1 builtin_apply + 201
> (bltinmodule.c:100)
> 74 org.python.python 0x0027faca PyEval_EvalFrame + 22777
> (ceval.c:3568)
> 75 org.python.python 0x0027ebaa PyEval_EvalFrame + 18905
> (ceval.c:3651)
> 76 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 77 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 78 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 79 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 80 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 81 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 82 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 83 org.python.python 0x0027e69c PyEval_EvalFrame + 17611
> (ceval.c:3845)
> 84 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 85 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 86 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 87 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 88 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 89 org.python.python 0x0027944a PyEval_CallObjectWithKeywords +
> 112 (ceval.c:3435)
> 90 _Acquisition.so 0x0151e9ac CallMethodO + 60
> (_Acquisition.c:97)
> 91 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 92 org.python.python 0x0027944a PyEval_CallObjectWithKeywords +
> 112 (ceval.c:3435)
> 93 org.python.python 0x002715a1 builtin_apply + 201
> (bltinmodule.c:100)
> 94 org.python.python 0x0027faca PyEval_EvalFrame + 22777
> (ceval.c:3568)
> 95 org.python.python 0x0027ebaa PyEval_EvalFrame + 18905
> (ceval.c:3651)
> 96 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 97 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 98 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 99 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 100 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 101 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 102 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 103 org.python.python 0x0027944a PyEval_CallObjectWithKeywords +
> 112 (ceval.c:3435)
> 104 _Acquisition.so 0x0151e9ac CallMethodO + 60
> (_Acquisition.c:97)
> 105 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 106 org.python.python 0x0027944a PyEval_CallObjectWithKeywords +
> 112 (ceval.c:3435)
> 107 org.python.python 0x002715a1 builtin_apply + 201
> (bltinmodule.c:100)
> 108 org.python.python 0x0027faca PyEval_EvalFrame + 22777
> (ceval.c:3568)
> 109 org.python.python 0x0027ebaa PyEval_EvalFrame + 18905
> (ceval.c:3651)
> 110 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 111 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 112 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 113 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 114 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 115 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 116 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 117 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 118 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 119 org.python.python 0x0027e49f PyEval_EvalFrame + 17102
> (ceval.c:3661)
> 120 org.python.python 0x00280665 PyEval_EvalCodeEx + 1774
> (ceval.c:2741)
> 121 org.python.python 0x00228063 function_call + 320
> (funcobject.c:548)
> 122 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 123 org.python.python 0x00215667 instancemethod_call + 401
> (classobject.c:2532)
> 124 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 125 org.python.python 0x0027944a PyEval_CallObjectWithKeywords +
> 112 (ceval.c:3435)
> 126 org.python.python 0x00217aaa PyInstance_New + 114
> (classobject.c:588)
> 127 org.python.python 0x0020d87f PyObject_Call + 45
> (abstract.c:1795)
> 128 org.python.python 0x0027944a PyEval_CallObjectWithKeywords +
> 112 (ceval.c:3435)
> 129 org.python.python 0x002b3126 t_bootstrap + 62
> (threadmodule.c:434)
> 130 libSystem.B.dylib 0x90024987 _pthread_body + 84
>
> _______________________________________________
> lxml-dev mailing list
> lxml-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/lxml-dev
>
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> lxml-dev mailing list
> lxml-dev at codespeak.net
> http://codespeak.net/mailman/listinfo/lxml-dev
More information about the lxml-dev
mailing list