[
https://issues.apache.org/jira/browse/XERCESJ-1260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Glavassevich updated XERCESJ-1260:
------------------------------------------
Fix Version/s: 2.9.1
> 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
> Assignee: Michael Glavassevich
> Fix For: 2.9.1
>
>
> 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)
--
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]