You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org> on 2007/07/20 21:40:06 UTC

[jira] Created: (XERCESJ-1260) DTDGrammar is not thread-safe, but needs to be in order to work with grammar pools.

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: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org


[jira] Updated: (XERCESJ-1260) DTDGrammar is not thread-safe, but needs to be in order to work with grammar pools.

Posted by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org>.
     [ 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: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org


[jira] Updated: (XERCESJ-1260) DTDGrammar is not thread-safe, but needs to be in order to work with grammar pools.

Posted by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org>.
     [ https://issues.apache.org/jira/browse/XERCESJ-1260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Glavassevich updated XERCESJ-1260:
------------------------------------------

    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)

  was:
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)


> 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 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: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org


[jira] Assigned: (XERCESJ-1260) DTDGrammar is not thread-safe, but needs to be in order to work with grammar pools.

Posted by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org>.
     [ 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: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org


[jira] Resolved: (XERCESJ-1260) DTDGrammar is not thread-safe, but needs to be in order to work with grammar pools.

Posted by "Michael Glavassevich (JIRA)" <xe...@xml.apache.org>.
     [ https://issues.apache.org/jira/browse/XERCESJ-1260?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Glavassevich resolved XERCESJ-1260.
-------------------------------------------

    Resolution: Fixed

Fixed in SVN.

> 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: j-dev-unsubscribe@xerces.apache.org
For additional commands, e-mail: j-dev-help@xerces.apache.org