Description
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 the 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)