Project

Profile

Help

Bug #3200

closed

StackOverflow (infinite recursion in optimizer)

Added by Radu Coravu about 7 years ago. Updated almost 7 years ago.

Status:
Closed
Priority:
Normal
Assignee:
Category:
Internals
Sprint/Milestone:
-
Start date:
2017-04-13
Due date:
% Done:

100%

Estimated time:
Legacy ID:
Applies to branch:
9.7
Fix Committed on Branch:
9.7, trunk
Fixed in Maintenance Release:
Platforms:

Description

The XSLT looks like this:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="/">
        <results>
            <xsl:for-each select="1 to 3">
                <xsl:variable name="pos" select="position()"/>
                <xsl:for-each select="7 to 9">
                    <xsl:element name="test">
                        <xsl:attribute name="xml:id" select="concat('hi', string($pos))"/>
                    </xsl:element>
                </xsl:for-each>
            </xsl:for-each>
        </results>
    </xsl:template>
</xsl:stylesheet>

and if it is applied to any XML you get this:

java.lang.StackOverflowError
	at java.util.AbstractList.iterator(Unknown Source)
	at net.sf.saxon.expr.Expression.optimizeChildren(Expression.java:514)
	at net.sf.saxon.expr.FunctionCall.optimize(FunctionCall.java:248)
	at net.sf.saxon.expr.SystemFunctionCall.optimize(SystemFunctionCall.java:158)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.Expression.optimizeChildren(Expression.java:515)
	at net.sf.saxon.expr.instruct.SimpleNodeConstructor.optimize(SimpleNodeConstructor.java:163)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.Expression.optimizeChildren(Expression.java:515)
	at net.sf.saxon.expr.instruct.ParentNodeConstructor.optimize(ParentNodeConstructor.java:206)
	at net.sf.saxon.expr.instruct.FixedElement.optimize(FixedElement.java:108)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:248)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)
	at net.sf.saxon.expr.LetExpression.optimize(LetExpression.java:311)
	at net.sf.saxon.expr.instruct.ForEach.optimize(ForEach.java:273)
	at net.sf.saxon.expr.Operand.optimize(Operand.java:200)

Please register to edit this issue

Also available in: Atom PDF