Re: [xml] xpath/xslt memory leak
- From: "William M. Brack" <wbrack mmm com hk>
- To: Pawe³ Pa³ucha <pawel praterm com pl>
- Cc: xml gnome org
- Subject: Re: [xml] xpath/xslt memory leak
- Date: Wed, 6 Apr 2005 13:32:33 +0800 (HKT)
Pawe³ Pa³ucha said:
Hi,
I think I've found a nice memory leak. I'm using xslt to reproduce it, but I
think that bug is in xpath module, so I send it here.
I don't think there is any such thing as a "nice" memory leak - leaks are bad,
bad, bad...
I'm working on the problem, but I'm not going to be able to continue for a few
days, so I thought I better reply in order to confirm your report.
The program is just transforming simple document in loop:
I can reproduce the leak using xsltproc, so there is no argument over whether
your program is good or bad.
<snip>
Document (b.xml) is like that:
<?xml version="1.0"?>
<params xmlns="http://www.praterm.com.pl/SZARP/ipk">
<param>
<raport title="A"/>
</param>
</params>
and stylesheet:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ipk="http://www.praterm.com.pl/SZARP/ipk">
<!-- <xsl:param name="title"/> -->
<xsl:template match="ipk:params">
<xsl:element name="report">
<xsl:for-each select="//ipk:param[ipk:raport[ title=$title]]">
<xsl:element name="param">
</xsl:element>
</xsl:for-each>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
The stylesheet is somewhat incorrect - declaration of parameter 'title' is
missing. This simple program keeps allocating more and more memory (can be
viewed with top/htop). When I uncomment the parameter declaration, everything
works OK.
I simplified these documents a little - when debugging it's good to get rid of
all the non-esential parts (e.g. namespace isn't involved, etc.). The missing
variable declaration is certainly a part of the problem. Here's my reduced
set:
<?xml version="1.0"?>
<params><param/></params>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="params">
<xsl:value-of select="param[ title=$title]"/>
</xsl:template>
</xsl:stylesheet>
And, btw - the output from valgrind differs when I use
'--leak-resolution=high'.
Checked with 2.6.18, but there's nothing about it in changelog, so I suppose
its still there.
I'm just using
valgrind --tool=memcheck --show-reachable=yes --leak-check=yes
--num-callers=15 xsltproc b.xsl b.xml
Problem is present in current CVS.
bill billsuper work $ xsltproc --version
Using libxml 20619-CVS2405, libxslt 10114-CVS1011 and libexslt 812-CVS1011
Files in attachment for convenience.
Pawe³ Pa³ucha
I'll respond further after I've had a chance to find / fix the problem (of
course, if someone else wants to do some debugging within xpath.c before I can
get back to it, they're certainly welcome to do so :-). Thanks for the
report.
Bill
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]