DTDGrammar is not thread-safe, but needs to be in order to work with grammar
pools.
-----------------------------------------------------------------------------------
Key: XERCESJ-1260
URL: https://issues.apache.org/jira/browse/XERCESJ-1260
Project: Xerces2-J
Issue Type: Bug
Components: DTD
Affects Versions: 2.9.0
Reporter: Michael Glavassevich
If a DTDGrammar is pre-parsed and stored in an XMLGrammarPool which is shared
across parsers running in different threads, it's possible that the content
model builder will fail with one of the exceptions below. The
createChildModel() needs to be synchronized (like analagous method in CMBuilder
for SchemaGrammars).
java.lang.NullPointerException
at
org.apache.xerces.impl.dtd.models.DFAContentModel.buildDFA(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.<init>(DFAContentModel.java:215)
at
org.apache.xerces.impl.dtd.DTDGrammar.createChildModel(DTDGrammar.java:2271)
at
org.apache.xerces.impl.dtd.DTDGrammar.getElementContentModelValidator(DTDGrammar.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.DTDGrammar.getElementDecl(DTDGrammar.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.XMLDTDValidator.checkContent(XMLDTDValidator.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java(Compiled
Code))
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java(Compiled
Code))
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java(Compiled
Code))
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java(Compiled
Code))
at
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java(Compiled
Code))
at
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java(Compiled
Code))
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java(Inlined
Compiled Code))
at
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java(Compiled
Code))
java.lang.ArrayIndexOutOfBoundsException: 115
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.postTreeBuildInit(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.buildDFA(DFAContentModel.java(Compiled
Code))
at
org.apache.xerces.impl.dtd.models.DFAContentModel.<init>(DFAContentModel.java:215)
at
org.apache.xerces.impl.dtd.DTDGrammar.createChildModel(DTDGrammar.java:2271)
at
org.apache.xerces.impl.dtd.DTDGrammar.getElementContentModelValidator(DTDGrammar.java:1735)
at
org.apache.xerces.impl.dtd.DTDGrammar.getElementDecl(DTDGrammar.java:1237)
at
org.apache.xerces.impl.dtd.XMLDTDValidator.checkContent(XMLDTDValidator.java:1689)
at
org.apache.xerces.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2024)
at
org.apache.xerces.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:923)
at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:673)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1645)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
at
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845)
at
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
at
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1127)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]