Actions
Bug #4363
closedConcurrentModificationException in XQueryCompiler
Start date:
2019-10-28
Due date:
% Done:
0%
Estimated time:
Legacy ID:
Applies to branch:
9.9, trunk
Fix Committed on Branch:
9.9, trunk
Fixed in Maintenance Release:
Platforms:
Description
A ConcurrentModificationException occurred when running multiple compilations using the same instance of XQueryCompiler:
java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:909)
at java.util.ArrayList$Itr.next(ArrayList.java:859)
at net.sf.saxon.expr.Assignation.addReference(Assignation.java:403)
at net.sf.saxon.expr.LocalVariableReference.copy(LocalVariableReference.java:72)
at net.sf.saxon.expr.InstanceOfExpression.copy(InstanceOfExpression.java:205)
at net.sf.saxon.expr.OrExpression.copy(OrExpression.java:95)
at net.sf.saxon.expr.instruct.Choose.copy(Choose.java:566)
at net.sf.saxon.expr.LetExpression.copy(LetExpression.java:690)
at com.saxonica.ee.bytecode.ByteCodeCandidate.copy(ByteCodeCandidate.java:113)
at com.saxonica.ee.optim.OptimizerEE.tryInlineFunctionCall(OptimizerEE.java:1128)
at net.sf.saxon.expr.UserFunctionCall.optimize(UserFunctionCall.java:406)
at net.sf.saxon.expr.Operand.optimize(Operand.java:206)
at net.sf.saxon.expr.Expression.optimizeChildren(Expression.java:617)
at net.sf.saxon.expr.Expression.optimize(Expression.java:594)
at net.sf.saxon.ma.arrays.SquareArrayConstructor.optimize(SquareArrayConstructor.java:143)
at net.sf.saxon.expr.Operand.optimize(Operand.java:206)
at net.sf.saxon.expr.SlashExpression.optimize(SlashExpression.java:352)
at net.sf.saxon.expr.flwor.FLWORExpression.optimize(FLWORExpression.java:463)
at net.sf.saxon.query.XQueryExpression.<init>(XQueryExpression.java:89)
at com.saxonica.ee.optim.XQueryExpressionEE.<init>(XQueryExpressionEE.java:54)
at com.saxonica.config.EnterpriseConfiguration.makeXQueryExpression(EnterpriseConfiguration.java:2051)
at net.sf.saxon.query.XQueryParser.makeXQueryExpression(XQueryParser.java:193)
at net.sf.saxon.query.StaticQueryContext.compileQuery(StaticQueryContext.java:597)
at net.sf.saxon.s9api.XQueryCompiler.compile(XQueryCompiler.java:536)
at Saxon3483.run(Saxon3483.java:71)
at java.lang.Thread.run(Thread.java:748)
This is reproducible with the test program that is attached to #3483 within a few test cycles, however the exception handling in its run method must be modified in order to avoid NPEs, e.g.:
public void run() {
try {
getXQueryCompiler().compile(QUERY);
}
catch (Exception e) {
synchronized (printLock) {
e.printStackTrace(System.err);
System.err.println("total number of test cycles: " + testCycle);
System.exit(1);
}
}
}
Tested with Saxon-EE 9.9.1.5.
Please register to edit this issue
Actions