[ 
https://issues.apache.org/jira/browse/XERCESJ-1260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Glavassevich reassigned XERCESJ-1260:
---------------------------------------------

    Assignee: Michael Glavassevich

> 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
>
> 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]

Reply via email to