ID: 27236 User updated by: bo at theaddedones dot com Reported By: bo at theaddedones dot com Status: Open Bug Type: XSLT related Operating System: solaris 8, OSX 10.3, Redhat PHP Version: 4.3.4 New Comment:
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 Previous Comments: ------------------------------------------------------------------------ [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-13 08:16:02] [EMAIL PROTECTED] Thank you for this bug report. To properly diagnose the problem, we need a short but complete example script to be able to reproduce this bug ourselves. A proper reproducing script starts with <?php and ends with ?>, is max. 10-20 lines long and does not require any external resources such as databases, etc. If possible, make the script source available online and provide an URL to it here. Try avoid embedding huge scripts into the report. ------------------------------------------------------------------------ [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