Actions
Bug #6004
closedjava.lang.RuntimeException: Internal error in XSLT 3 using xsl:evaluate on function call of anonymous function
Start date:
2023-05-01
Due date:
% Done:
0%
Estimated time:
Legacy ID:
Applies to branch:
11, 12
Fix Committed on Branch:
Fixed in Maintenance Release:
Platforms:
.NET, Java
Description
Trying to approach as to what could be wrong in https://saxonica.plan.io/issues/6003 I wrote some simpler code using xsl:evaluate
on an XPath expression which is an anonymous function that is then called with a parameter bound in the function body; that brings down Saxon HE 12.1 Java, 11.5 Java and SaxonCS 12.1 with errors like "System.Exception: Internal error evaluating function anon:f_16454088" (CS) or "java.lang.RuntimeException: Internal error evaluating function anon:f_1768242710" (HE 12.1 J).
SaxonJS runs the code without giving errors.
The code is e.g.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="3.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="#all"
expand-text="yes">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="value">
<xsl:next-match/>
<result>
<xsl:evaluate xpath=". || '()'">
<xsl:with-param name="p1" select="map{ 'foo': 'foo 1' }"/>
</xsl:evaluate>
</result>
</xsl:template>
<xsl:template match="/" name="xsl:initial-template">
<xsl:copy>
<xsl:apply-templates/>
<xsl:comment>Run with {system-property('xsl:product-name')} {system-property('xsl:product-version')} {system-property('Q{http://saxon.sf.net/}platform')} at {current-dateTime()}</xsl:comment>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Input:
<root>
<value>function() { $p1?foo }</value>
</root>
Stack trace of HE 12.1 Java:
java.lang.RuntimeException: Internal error evaluating function anon:f_1768242710
at net.sf.saxon.expr.instruct.UserFunction.call(UserFunction.java:690)
at net.sf.saxon.functions.hof.UserFunctionReference$BoundUserFunction.call(UserFunctionReference.java:488)
at net.sf.saxon.expr.DynamicFunctionCall$DynamicFunctionCallElaborator.lambda$elaborateForPull$2(DynamicFunctionCall.java:357)
at net.sf.saxon.expr.DynamicFunctionCall.iterate(DynamicFunctionCall.java:222)
at net.sf.saxon.expr.instruct.EvaluateInstr$EvaluateInstrElaborator.lambda$elaborateForPull$4(EvaluateInstr.java:689)
at net.sf.saxon.expr.elab.PullElaborator.lambda$elaborateForPush$0(PullElaborator.java:38)
at net.sf.saxon.expr.instruct.FixedElement$FixedElementElaborator.lambda$elaborateForPush$0(FixedElement.java:653)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$1(Block.java:856)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:396)
at net.sf.saxon.trans.Mode.handleRuleNotNull(Mode.java:568)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:502)
at net.sf.saxon.trans.rules.ShallowCopyRuleSet.process(ShallowCopyRuleSet.java:112)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:499)
at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesElaborator.lambda$elaborateForPush$1(ApplyTemplates.java:653)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$1(Block.java:854)
at net.sf.saxon.expr.instruct.Copy$CopyElaborator.lambda$elaborateForPush$0(Copy.java:651)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:396)
at net.sf.saxon.trans.Mode.handleRuleNotNull(Mode.java:568)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:502)
at net.sf.saxon.trans.XsltController.applyTemplates(XsltController.java:684)
at net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:427)
at net.sf.saxon.s9api.Xslt30Transformer.applyTemplates(Xslt30Transformer.java:306)
at net.sf.saxon.Transform.processFile(Transform.java:1389)
at net.sf.saxon.Transform.doTransform(Transform.java:879)
at net.sf.saxon.Transform.main(Transform.java:83)
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at net.sf.saxon.value.Closure.saveContext(Closure.java:90)
at net.sf.saxon.value.MemoClosure.<init>(MemoClosure.java:65)
at net.sf.saxon.expr.elab.MemoClosureEvaluator.evaluate(MemoClosureEvaluator.java:47)
at net.sf.saxon.expr.elab.LearningEvaluator.evaluate(LearningEvaluator.java:61)
at net.sf.saxon.expr.instruct.UserFunction.call(UserFunction.java:675)
... 24 more
java.lang.RuntimeException: Internal error evaluating template rule at line 10 in module file:/C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/evaluate/eval-function1.xsl
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:411)
at net.sf.saxon.trans.Mode.handleRuleNotNull(Mode.java:568)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:502)
at net.sf.saxon.trans.rules.ShallowCopyRuleSet.process(ShallowCopyRuleSet.java:112)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:499)
at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesElaborator.lambda$elaborateForPush$1(ApplyTemplates.java:653)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$1(Block.java:854)
at net.sf.saxon.expr.instruct.Copy$CopyElaborator.lambda$elaborateForPush$0(Copy.java:651)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:396)
at net.sf.saxon.trans.Mode.handleRuleNotNull(Mode.java:568)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:502)
at net.sf.saxon.trans.XsltController.applyTemplates(XsltController.java:684)
at net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:427)
at net.sf.saxon.s9api.Xslt30Transformer.applyTemplates(Xslt30Transformer.java:306)
at net.sf.saxon.Transform.processFile(Transform.java:1389)
at net.sf.saxon.Transform.doTransform(Transform.java:879)
at net.sf.saxon.Transform.main(Transform.java:83)
Caused by: java.lang.RuntimeException: Internal error evaluating function anon:f_1768242710
at net.sf.saxon.expr.instruct.UserFunction.call(UserFunction.java:690)
at net.sf.saxon.functions.hof.UserFunctionReference$BoundUserFunction.call(UserFunctionReference.java:488)
at net.sf.saxon.expr.DynamicFunctionCall$DynamicFunctionCallElaborator.lambda$elaborateForPull$2(DynamicFunctionCall.java:357)
at net.sf.saxon.expr.DynamicFunctionCall.iterate(DynamicFunctionCall.java:222)
at net.sf.saxon.expr.instruct.EvaluateInstr$EvaluateInstrElaborator.lambda$elaborateForPull$4(EvaluateInstr.java:689)
at net.sf.saxon.expr.elab.PullElaborator.lambda$elaborateForPush$0(PullElaborator.java:38)
at net.sf.saxon.expr.instruct.FixedElement$FixedElementElaborator.lambda$elaborateForPush$0(FixedElement.java:653)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$1(Block.java:856)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:396)
... 16 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at net.sf.saxon.value.Closure.saveContext(Closure.java:90)
at net.sf.saxon.value.MemoClosure.<init>(MemoClosure.java:65)
at net.sf.saxon.expr.elab.MemoClosureEvaluator.evaluate(MemoClosureEvaluator.java:47)
at net.sf.saxon.expr.elab.LearningEvaluator.evaluate(LearningEvaluator.java:61)
at net.sf.saxon.expr.instruct.UserFunction.call(UserFunction.java:675)
... 24 more
java.lang.RuntimeException: Internal error evaluating template rule at line 19 in module file:/C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/evaluate/eval-function1.xsl
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:411)
at net.sf.saxon.trans.Mode.handleRuleNotNull(Mode.java:568)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:502)
at net.sf.saxon.trans.XsltController.applyTemplates(XsltController.java:684)
at net.sf.saxon.s9api.AbstractXsltTransformer.applyTemplatesToSource(AbstractXsltTransformer.java:427)
at net.sf.saxon.s9api.Xslt30Transformer.applyTemplates(Xslt30Transformer.java:306)
at net.sf.saxon.Transform.processFile(Transform.java:1389)
at net.sf.saxon.Transform.doTransform(Transform.java:879)
at net.sf.saxon.Transform.main(Transform.java:83)
Caused by: java.lang.RuntimeException: Internal error evaluating template rule at line 10 in module file:/C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/evaluate/eval-function1.xsl
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:411)
at net.sf.saxon.trans.Mode.handleRuleNotNull(Mode.java:568)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:502)
at net.sf.saxon.trans.rules.ShallowCopyRuleSet.process(ShallowCopyRuleSet.java:112)
at net.sf.saxon.trans.Mode.applyTemplates(Mode.java:499)
at net.sf.saxon.expr.instruct.ApplyTemplates$ApplyTemplatesElaborator.lambda$elaborateForPush$1(ApplyTemplates.java:653)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$1(Block.java:854)
at net.sf.saxon.expr.instruct.Copy$CopyElaborator.lambda$elaborateForPush$0(Copy.java:651)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:396)
... 8 more
Caused by: java.lang.RuntimeException: Internal error evaluating function anon:f_1768242710
at net.sf.saxon.expr.instruct.UserFunction.call(UserFunction.java:690)
at net.sf.saxon.functions.hof.UserFunctionReference$BoundUserFunction.call(UserFunctionReference.java:488)
at net.sf.saxon.expr.DynamicFunctionCall$DynamicFunctionCallElaborator.lambda$elaborateForPull$2(DynamicFunctionCall.java:357)
at net.sf.saxon.expr.DynamicFunctionCall.iterate(DynamicFunctionCall.java:222)
at net.sf.saxon.expr.instruct.EvaluateInstr$EvaluateInstrElaborator.lambda$elaborateForPull$4(EvaluateInstr.java:689)
at net.sf.saxon.expr.elab.PullElaborator.lambda$elaborateForPush$0(PullElaborator.java:38)
at net.sf.saxon.expr.instruct.FixedElement$FixedElementElaborator.lambda$elaborateForPush$0(FixedElement.java:653)
at net.sf.saxon.expr.instruct.Block$BlockElaborator.lambda$elaborateForPush$1(Block.java:856)
at net.sf.saxon.expr.instruct.TemplateRule.applyLeavingTail(TemplateRule.java:396)
... 16 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 0 out of bounds for length 0
at net.sf.saxon.value.Closure.saveContext(Closure.java:90)
at net.sf.saxon.value.MemoClosure.<init>(MemoClosure.java:65)
at net.sf.saxon.expr.elab.MemoClosureEvaluator.evaluate(MemoClosureEvaluator.java:47)
at net.sf.saxon.expr.elab.LearningEvaluator.evaluate(LearningEvaluator.java:61)
at net.sf.saxon.expr.instruct.UserFunction.call(UserFunction.java:675)
... 24 more
Fatal error during transformation: java.lang.RuntimeException: Internal error evaluating template rule at line 19 in module file:/C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/evaluate/eval-function1.xsl
Stack trace SaxonCS 12.1
<?xml version="1.0" encoding="UTF-8"?><root>
<value>function() { $p1?foo }</value>System.Exception: Internal error evaluating function anon:f_16454088
---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Saxon.Hej.value.Closure.saveContext(Expression expression, XPathContext context)
at Saxon.Hej.value.MemoClosure..ctor(Expression expr, PullEvaluator inputEvaluator, XPathContext context)
at Saxon.Hej.expr.elab.MemoClosureEvaluator.evaluate(XPathContext context)
at Saxon.Hej.expr.elab.LearningEvaluator.evaluate(XPathContext context)
at Saxon.Hej.expr.instruct.UserFunction.call(XPathContext context, Sequence[] actualArgs)
--- End of inner exception stack trace ---
at Saxon.Hej.expr.instruct.UserFunction.call(XPathContext context, Sequence[] actualArgs)
at Saxon.Hej.functions.hof.UserFunctionReference.BoundUserFunction.call(XPathContext context, Sequence[] args)
at Saxon.Hej.expr.DynamicFunctionCall.DynamicFunctionCallElaborator.<>c__DisplayClass0_0.<elaborateForPull>b__0(XPathContext context)
at Saxon.Hej.expr.DynamicFunctionCall.iterate(XPathContext context)
at Saxon.Hej.expr.instruct.EvaluateInstr.EvaluateInstrElaborator.<>c__DisplayClass0_0.<elaborateForPull>b__0(XPathContext context)
at Saxon.Hej.expr.elab.PullElaborator.<>c__DisplayClass2_0.<elaborateForPush>b__0(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.FixedElement.FixedElementElaborator.<>c__DisplayClass0_0.<elaborateForPush>b__0(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.Block.BlockElaborator.<>c__DisplayClass3_1.<elaborateForPush>b__1(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.TemplateRule.applyLeavingTail(Outputter output, XPathContext context)
System.Exception: Internal error evaluating template rule at line 10 in module file:///C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/evaluate/eval-function1.xsl
---> System.Exception: Internal error evaluating function anon:f_16454088
---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Saxon.Hej.value.Closure.saveContext(Expression expression, XPathContext context)
at Saxon.Hej.value.MemoClosure..ctor(Expression expr, PullEvaluator inputEvaluator, XPathContext context)
at Saxon.Hej.expr.elab.MemoClosureEvaluator.evaluate(XPathContext context)
at Saxon.Hej.expr.elab.LearningEvaluator.evaluate(XPathContext context)
at Saxon.Hej.expr.instruct.UserFunction.call(XPathContext context, Sequence[] actualArgs)
--- End of inner exception stack trace ---
at Saxon.Hej.expr.instruct.UserFunction.call(XPathContext context, Sequence[] actualArgs)
at Saxon.Hej.functions.hof.UserFunctionReference.BoundUserFunction.call(XPathContext context, Sequence[] args)
at Saxon.Hej.expr.DynamicFunctionCall.DynamicFunctionCallElaborator.<>c__DisplayClass0_0.<elaborateForPull>b__0(XPathContext context)
at Saxon.Hej.expr.DynamicFunctionCall.iterate(XPathContext context)
at Saxon.Hej.expr.instruct.EvaluateInstr.EvaluateInstrElaborator.<>c__DisplayClass0_0.<elaborateForPull>b__0(XPathContext context)
at Saxon.Hej.expr.elab.PullElaborator.<>c__DisplayClass2_0.<elaborateForPush>b__0(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.FixedElement.FixedElementElaborator.<>c__DisplayClass0_0.<elaborateForPush>b__0(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.Block.BlockElaborator.<>c__DisplayClass3_1.<elaborateForPush>b__1(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.TemplateRule.applyLeavingTail(Outputter output, XPathContext context)
--- End of inner exception stack trace ---
at Saxon.Hej.expr.instruct.TemplateRule.applyLeavingTail(Outputter output, XPathContext context)
at Saxon.Hej.trans.Mode.handleRuleNotNull(Rule rule, TraceListener traceListener, XPathContextMajor context, Item item, TemplateRule previousTemplate, ParameterSet parameters, ParameterSet tunnelParameters, Outputter output)
at Saxon.Hej.trans.Mode.applyTemplates(ParameterSet parameters, ParameterSet tunnelParameters, NodeInfo separator, Outputter output, XPathContextMajor context, Location locationId)
at Saxon.Hej.trans.rules.ShallowCopyRuleSet.process(Item item, ParameterSet parameters, ParameterSet tunnelParams, Outputter out, XPathContext context, Location locationId)
at Saxon.Hej.trans.Mode.applyTemplates(ParameterSet parameters, ParameterSet tunnelParameters, NodeInfo separator, Outputter output, XPathContextMajor context, Location locationId)
at Saxon.Hej.expr.instruct.ApplyTemplates.ApplyTemplatesElaborator.<>c__DisplayClass1_2.<elaborateForPush>b__1(Outputter output, XPathContext context)
at Saxon.Hej.expr.instruct.Block.BlockElaborator.<>c__DisplayClass3_1.<elaborateForPush>b__1(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.Copy.CopyElaborator.<>c__DisplayClass0_0.<elaborateForPush>b__0(Outputter output, XPathContext context)
at Saxon.Hej.expr.instruct.TemplateRule.applyLeavingTail(Outputter output, XPathContext context)
System.Exception: Internal error evaluating template rule at line 19 in module file:///C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/evaluate/eval-function1.xsl
---> System.Exception: Internal error evaluating template rule at line 10 in module file:///C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/evaluate/eval-function1.xsl
---> System.Exception: Internal error evaluating function anon:f_16454088
---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at Saxon.Hej.value.Closure.saveContext(Expression expression, XPathContext context)
at Saxon.Hej.value.MemoClosure..ctor(Expression expr, PullEvaluator inputEvaluator, XPathContext context)
at Saxon.Hej.expr.elab.MemoClosureEvaluator.evaluate(XPathContext context)
at Saxon.Hej.expr.elab.LearningEvaluator.evaluate(XPathContext context)
at Saxon.Hej.expr.instruct.UserFunction.call(XPathContext context, Sequence[] actualArgs)
--- End of inner exception stack trace ---
at Saxon.Hej.expr.instruct.UserFunction.call(XPathContext context, Sequence[] actualArgs)
at Saxon.Hej.functions.hof.UserFunctionReference.BoundUserFunction.call(XPathContext context, Sequence[] args)
at Saxon.Hej.expr.DynamicFunctionCall.DynamicFunctionCallElaborator.<>c__DisplayClass0_0.<elaborateForPull>b__0(XPathContext context)
at Saxon.Hej.expr.DynamicFunctionCall.iterate(XPathContext context)
at Saxon.Hej.expr.instruct.EvaluateInstr.EvaluateInstrElaborator.<>c__DisplayClass0_0.<elaborateForPull>b__0(XPathContext context)
at Saxon.Hej.expr.elab.PullElaborator.<>c__DisplayClass2_0.<elaborateForPush>b__0(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.FixedElement.FixedElementElaborator.<>c__DisplayClass0_0.<elaborateForPush>b__0(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.Block.BlockElaborator.<>c__DisplayClass3_1.<elaborateForPush>b__1(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.TemplateRule.applyLeavingTail(Outputter output, XPathContext context)
--- End of inner exception stack trace ---
at Saxon.Hej.expr.instruct.TemplateRule.applyLeavingTail(Outputter output, XPathContext context)
at Saxon.Hej.trans.Mode.handleRuleNotNull(Rule rule, TraceListener traceListener, XPathContextMajor context, Item item, TemplateRule previousTemplate, ParameterSet parameters, ParameterSet tunnelParameters, Outputter output)
at Saxon.Hej.trans.Mode.applyTemplates(ParameterSet parameters, ParameterSet tunnelParameters, NodeInfo separator, Outputter output, XPathContextMajor context, Location locationId)
at Saxon.Hej.trans.rules.ShallowCopyRuleSet.process(Item item, ParameterSet parameters, ParameterSet tunnelParams, Outputter out, XPathContext context, Location locationId)
at Saxon.Hej.trans.Mode.applyTemplates(ParameterSet parameters, ParameterSet tunnelParameters, NodeInfo separator, Outputter output, XPathContextMajor context, Location locationId)
at Saxon.Hej.expr.instruct.ApplyTemplates.ApplyTemplatesElaborator.<>c__DisplayClass1_2.<elaborateForPush>b__1(Outputter output, XPathContext context)
at Saxon.Hej.expr.instruct.Block.BlockElaborator.<>c__DisplayClass3_1.<elaborateForPush>b__1(Outputter out, XPathContext context)
at Saxon.Hej.expr.instruct.Copy.CopyElaborator.<>c__DisplayClass0_0.<elaborateForPush>b__0(Outputter output, XPathContext context)
at Saxon.Hej.expr.instruct.TemplateRule.applyLeavingTail(Outputter output, XPathContext context)
--- End of inner exception stack trace ---
at Saxon.Hej.expr.instruct.TemplateRule.applyLeavingTail(Outputter output, XPathContext context)
at Saxon.Hej.trans.Mode.handleRuleNotNull(Rule rule, TraceListener traceListener, XPathContextMajor context, Item item, TemplateRule previousTemplate, ParameterSet parameters, ParameterSet tunnelParameters, Outputter output)
at Saxon.Hej.trans.Mode.applyTemplates(ParameterSet parameters, ParameterSet tunnelParameters, NodeInfo separator, Outputter output, XPathContextMajor context, Location locationId)
at Saxon.Hej.trans.XsltController.applyTemplates(Sequence source, Receiver out)
at Saxon.Hej.s9api.AbstractXsltTransformer.applyTemplatesToSource(Source source, Receiver out)
at Saxon.Hej.s9api.Xslt30Transformer.applyTemplates(Source source, Destination destination)
at Saxon.Hej.Transform.processFile(Source source, XsltExecutable sheet, File outputFile, CommandLineOptions options)
at Saxon.Hej.Transform.doTransform(String[] args)
Fatal error during transformation: Exception: Internal error evaluating template rule at line 19 in module file:///C:/Users/marti/OneDrive/Documents/xslt/blog-xslt-3-by-example/evaluate/eval-function1.xsl
Exiting with code 2
Related issues
Please register to edit this issue
Actions