[lxml-dev] python crashes in xmlDictFree inside Zope

Eric Tiffany etiffany at alum.mit.edu
Wed May 30 20:14:33 CEST 2007


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

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codespeak.net/pipermail/lxml-dev/attachments/20070530/9cdad7ad/attachment-0001.htm 


More information about the lxml-dev mailing list