ID: 27236 Updated by: [EMAIL PROTECTED] Reported By: bo at theaddedones dot com -Status: Open +Status: Feedback Bug Type: XSLT related Operating System: solaris 8, OSX 10.3, Redhat PHP Version: 4.3.4 New Comment:
Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip Can not reproduce with latest stable CVS snapshot, using these libxml/libxslt versions: libxml Version => 20604 libxslt Version => 1.0.32 Previous Comments: ------------------------------------------------------------------------ [2004-02-13 12:27:43] bo at theaddedones dot com As one more note i tried using the normal 'xsltproc' command built from the same libs with the same inputs as the example and i get no error ------------------------------------------------------------------------ [2004-02-13 12:16:28] bo at theaddedones dot com i should mention that the versions on the different systems that the error seems to appear on the OSX 10.3 system is php = 4.3.2 libxml = 20507, libxslt = 1.0.30 the verion on Solaris 8 php = 4.3.4, libxml = 20510, libxslt = 1.0.19 the version on Redhat 9 php 4.3.4, libxml = 20504, libxslt = 1.0.27 ------------------------------------------------------------------------ [2004-02-13 12:08:16] bo at theaddedones dot com here is compact code bit that seesms to give the error i speak of ---- <?php $inSheet = '<?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" /> <xsl:key name="state_key" match="images" use="state"/> <xsl:template name="TestKey"> <xsl:for-each select="//images[generate-id()=generate-id(key(\'state_key\',state)[1])]"> <xsl:value-of select="state"/>, </xsl:for-each> </xsl:template> <xsl:template match="/" /> </xsl:stylesheet>'; $inXML = '<?xml version="1.0" encoding="ISO-8859-1"?> <images> <author>Karl Larsen</author> <city>Culver City</city> <state>CA</state> <country>USA</country> </images>'; $xsltString = domxml_xslt_stylesheet_doc(domxml_open_mem($inSheet)); $xmlString = domxml_open_mem($inXML); $res = $xsltString->process($xmlString); print $xsltString->result_dump_mem($res); ?> ------------------------------------------------------------------------ [2004-02-12 19:59:20] bo at theaddedones dot com sorry, in the 'reporduce code' the proper xsl would be (just mistyped it) <xsl:key name="state_key" match="data" use="state"/> <xsl:for-each select="//data[generate-id()=generate-id(key('state_key',state)[1])]"><xsl:value-of select="state"/>, </xsl:for-each> ------------------------------------------------------------------------ [2004-02-12 19:55:30] bo at theaddedones dot com Description: ------------ i have a slew of xml data that i need to select unique values from ... the easiest method is via the xsl:key ... when i ever i use xsl:key to make a key (regardless of if i use or not) the xslt processor (libxml2 '20507', libxslt 1.0.30 -> 1.0.36 (the versions i have tried)) i get an 'xmlFree' error IF i compiled the libxml with the debug-mem option...if not i crashes the Apache (1.3.29) child via a bus error... the error.... Warning: Unknown(): Memory tag error occurs :0x6637671 bye in Unknown on line 0 Warning: Unknown(): xmlMemFree(6637691) error in Unknown on line 0 Warning: Unknown(): xmlMallocBreakpoint reached on block 0 in Unknown on line 0 interestingly, the entire XSL process works fine, and returns a properly converted document (even the keys work properly), it jsut dies with the memory error..i'm guessing something funny with garbage colleciton Reproduce code: --------------- the below should dump all the unique states in my data as a comma separated list <xsl:key name="state_key" match="images" use="state"/> <xsl:for-each select="//data[generate-id()=generate-id(key('state_key',state)[1])]"><xsl:value-of select="state"/>, </xsl:for-each> save as a normal xslt file try to compile using dom ala domxml_xslt_stylesheet_file({your file})... create some XML, and process the beast via 'process' you shall see the error Expected result: ---------------- no silly memmory failures Actual result: -------------- Warning: Unknown(): Memory tag error occurs :0x6637671 bye in Unknown on line 0 Warning: Unknown(): xmlMemFree(6637691) error in Unknown on line 0 Warning: Unknown(): xmlMallocBreakpoint reached on block 0 in Unknown on line 0 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=27236&edit=1
