[lxml-dev] python crashes in xmlDictFree inside Zope
Eric Tiffany
etiffany at alum.mit.edu
Thu May 31 14:54:29 CEST 2007
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. However, the lxml parsing/validation doesn¹t seem to
work correctly.
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.
ET
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codespeak.net/pipermail/lxml-dev/attachments/20070531/517c64ee/attachment-0001.htm
More information about the lxml-dev
mailing list