DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13838>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=13838 Unknown error in XPath in recursive string operation Summary: Unknown error in XPath in recursive string operation Product: XalanJ2 Version: 2.4 Platform: PC OS/Version: Windows NT/2K Status: NEW Severity: Normal Priority: Other Component: org.apache.xml.utils AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] I use this named template to perform string replacement in texts: <xsl:template name="replaceString"> <xsl:param name="string"/><xsl:param name="replace"/><xsl:param name="replacement"/> <xsl:variable name="firstChunk" select="substring-before($string, $replace)"/> <xsl:choose> <xsl:when test="$firstChunk = '' and not(starts-with($string, $replace))"> <xsl:value-of select="$string"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$firstChunk"/><xsl:value-of select="$replacement" disable-output-escaping="yes"/> <xsl:call-template name="replaceString"> <xsl:with-param name="string" select="substring-after($string, $replace)"/> <xsl:with-param name="replace" select="$replace"/> <xsl:with-param name="replacement" select="$replacement"/> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template> the problem happens randomly (not always on a given input) when I feed some large texts (few thousands chars are enough) to it, sometimes it yould appear as: javax.xml.transform.TransformerException: Unknown error in XPath at org.apache.xpath.XPath.execute(XPath.java:341) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:311) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:282) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:164) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:159) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:159) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2069) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1171) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:634) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066) ... Caused by: java.lang.NullPointerException at org.apache.xpath.objects.XRTreeFrag.str(XRTreeFrag.java:280) at org.apache.xpath.functions.FuncSubstringBefore.execute(FuncSubstringBefore.java:86) at org.apache.xpath.XPath.execute(XPath.java:318) ... 59 more --------- java.lang.NullPointerException at org.apache.xpath.objects.XRTreeFrag.str(XRTreeFrag.java:280) at org.apache.xpath.functions.FuncSubstringBefore.execute(FuncSubstringBefore.java:86) at org.apache.xpath.XPath.execute(XPath.java:318) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:311) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:282) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:164) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:159) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:159) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2069) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1171) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:634) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066) and sometimes as: javax.xml.transform.TransformerException: Unknown error in XPath at org.apache.xpath.XPath.execute(XPath.java:341) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:311) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:282) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:177) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) ... at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:177) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:164) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:159) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:159) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2069) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1171) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:634) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066) ... Caused by: java.lang.ArrayIndexOutOfBoundsException at org.apache.xml.utils.SuballocatedIntVector.elementAt(SuballocatedIntVector.java:454) at org.apache.xml.dtm.ref.DTMDefaultBase._firstch(DTMDefaultBase.java:523) at org.apache.xml.dtm.ref.sax2dtm.SAX2DTM.getStringValue(SAX2DTM.java:1209) at org.apache.xpath.objects.XRTreeFrag.str(XRTreeFrag.java:280) at org.apache.xpath.functions.FuncSubstringBefore.execute(FuncSubstringBefore.java:87) at org.apache.xpath.XPath.execute(XPath.java:318) ... 154 more --------- java.lang.ArrayIndexOutOfBoundsException at org.apache.xml.utils.SuballocatedIntVector.elementAt(SuballocatedIntVector.java:454) at org.apache.xml.dtm.ref.DTMDefaultBase._firstch(DTMDefaultBase.java:523) at org.apache.xml.dtm.ref.sax2dtm.SAX2DTM.getStringValue(SAX2DTM.java:1209) at org.apache.xpath.objects.XRTreeFrag.str(XRTreeFrag.java:280) at org.apache.xpath.functions.FuncSubstringBefore.execute(FuncSubstringBefore.java:87) at org.apache.xpath.XPath.execute(XPath.java:318) at org.apache.xalan.templates.ElemVariable.getValue(ElemVariable.java:311) at org.apache.xalan.templates.ElemVariable.execute(ElemVariable.java:282) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) ... at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:177) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:177) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:177) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemTemplate.execute(ElemTemplate.java:432) at org.apache.xalan.templates.ElemCallTemplate.execute(ElemCallTemplate.java:279) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemChoose.execute(ElemChoose.java:164) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:159) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:159) at org.apache.xalan.templates.ElemApplyTemplates.transformSelectedNodes(ElemApplyTemplates.java:422) at org.apache.xalan.templates.ElemApplyTemplates.execute(ElemApplyTemplates.java:226) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.templates.ElemCopy.execute(ElemCopy.java:178) at org.apache.xalan.transformer.TransformerImpl.executeChildTemplates(TransformerImpl.java:2243) at org.apache.xalan.transformer.TransformerImpl.applyTemplateToNode(TransformerImpl.java:2069) at org.apache.xalan.transformer.TransformerImpl.transformNode(TransformerImpl.java:1171) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:634) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1088) at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1066) The problem seems not to happen any more under neither form if I change the following method of org.apache.xml.utils.SuballocatedIntVector, instead of: public int elementAt(int i) { // This is actually a significant optimization! if(i<m_blocksize) return m_map0[i]; return m_map[i>>>m_SHIFT][i&m_MASK]; } I removed the optimization like this: public int elementAt(int i) { return m_map[i>>>m_SHIFT][i&m_MASK]; } and the problem disappeared.
