Re: [xml] xpathEval namespace axis corruption/segfault



On Mon, Mar 10, 2008 at 06:43:02PM -0700, William M. Brack wrote:
Martin (gzlist) wrote:
I attach a simple python script (libxml2_crash.py) that seems to
 reference uninitialised memory, or crash the interpreter.

<snip>
 I tried the simplest C equivalent I could cook up from the docs
 (attached libxml2_nocrash.c) which behaves itself, perhaps
suggesting
 the problem's in the python bindings. Could someone with a good
 understanding of the lib can get a better idea of what exactly is
up?

 Martin

I traced through quite a bit, and was able to isolate where and what
the problem is.  Unfortunately, I can't spend much time on libxml2
for the next couple of weeks, so I have opened a bug
(http://bugzilla.gnome.org/show_bug.cgi?id=521699) which describes
how far I got with it.

  yup, agreed with your analysis. That the only case where nodes returned
from an XPath query do not pertain to the document and hence have a different
lifetime.

`
Perhaps another list member may be able to pursue this?  Python
bindings are always fun to work on....

  I managed to find a minimalist but correct way to fix this, basically
get python to destroy the namespace node when it garbage collect the
associated python object and remove it from the nodeset before it is being
freed, this seems to work quite well actually. Patch attached, I will also
commit a specific regression test. Note that libxslt/python/types.c need
to be patched too.

Daniel

-- 
Red Hat Virtualization group http://redhat.com/virtualization/
Daniel Veillard      | virtualization library  http://libvirt.org/
veillard redhat com  | libxml GNOME XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | Rpmfind RPM search engine  http://rpmfind.net/

Attachment: pyxpathns.patch
Description: Text document



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]