You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Fried Hoeben (JIRA)" <ji...@apache.org> on 2009/09/02 14:12:32 UTC

[jira] Created: (CXF-2418) SchemaCollection throws StackOverflowError when schema contains circular reference

SchemaCollection throws StackOverflowError when schema contains circular reference
----------------------------------------------------------------------------------

                 Key: CXF-2418
                 URL: https://issues.apache.org/jira/browse/CXF-2418
             Project: CXF
          Issue Type: Bug
          Components: Aegis Databinding
    Affects Versions: 2.2.3
            Reporter: Fried Hoeben


When a schema contains a reference to an element inside itself, or there is another circular reference between schemas,  SchemaCollection.addCrossImports() goes into infinite recursion ending with a StackOverflowError.

Sample stack (before the error):
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
	SchemaCollection.addOneSchemaCrossImports(XmlSchema) line: 342	
	SchemaCollection.addCrossImports() line: 321	
	Databinding(AegisDatabinding).createSchemas(Service, Set<Type>) line: 504	
	Databinding(AegisDatabinding).initialize(Service) line: 285	
	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).buildServiceFromWSDL(String) line: 346	
	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).initializeServiceModel() line: 442	
	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).create() line: 195	
	JaxWsServiceFactoryBean.create() line: 163	
	JaxWsClientFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoint() line: 100	
	JaxWsClientFactoryBean(ClientFactoryBean).create() line: 52	
	JaxWsProxyFactoryBean(ClientProxyFactoryBean).create() line: 102	
	JaxWsProxyFactoryBean.create() line: 115	
...


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (CXF-2418) SchemaCollection throws StackOverflowError when schema contains circular reference

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-2418?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Kulp resolved CXF-2418.
------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.4

> SchemaCollection throws StackOverflowError when schema contains circular reference
> ----------------------------------------------------------------------------------
>
>                 Key: CXF-2418
>                 URL: https://issues.apache.org/jira/browse/CXF-2418
>             Project: CXF
>          Issue Type: Bug
>          Components: Aegis Databinding
>    Affects Versions: 2.2.3
>            Reporter: Fried Hoeben
>            Assignee: Daniel Kulp
>             Fix For: 2.2.4
>
>         Attachments: cxf-schemaCollection.patch
>
>
> When a schema contains a reference to an element inside itself, or there is another circular reference between schemas,  SchemaCollection.addCrossImports() goes into infinite recursion ending with a StackOverflowError.
> Sample stack (before the error):
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addOneSchemaCrossImports(XmlSchema) line: 342	
> 	SchemaCollection.addCrossImports() line: 321	
> 	Databinding(AegisDatabinding).createSchemas(Service, Set<Type>) line: 504	
> 	Databinding(AegisDatabinding).initialize(Service) line: 285	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).buildServiceFromWSDL(String) line: 346	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).initializeServiceModel() line: 442	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).create() line: 195	
> 	JaxWsServiceFactoryBean.create() line: 163	
> 	JaxWsClientFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoint() line: 100	
> 	JaxWsClientFactoryBean(ClientFactoryBean).create() line: 52	
> 	JaxWsProxyFactoryBean(ClientProxyFactoryBean).create() line: 102	
> 	JaxWsProxyFactoryBean.create() line: 115	
> ...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Updated: (CXF-2418) SchemaCollection throws StackOverflowError when schema contains circular reference

Posted by "Fried Hoeben (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-2418?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fried Hoeben updated CXF-2418:
------------------------------

    Attachment: cxf-schemaCollection.patch

Patch file that prevents the StackOverflowError, by ensuring that for each xmlSchema we only check each schemaElement once for cross imports, i.e. if it is encountered again it will be ignored.

> SchemaCollection throws StackOverflowError when schema contains circular reference
> ----------------------------------------------------------------------------------
>
>                 Key: CXF-2418
>                 URL: https://issues.apache.org/jira/browse/CXF-2418
>             Project: CXF
>          Issue Type: Bug
>          Components: Aegis Databinding
>    Affects Versions: 2.2.3
>            Reporter: Fried Hoeben
>         Attachments: cxf-schemaCollection.patch
>
>
> When a schema contains a reference to an element inside itself, or there is another circular reference between schemas,  SchemaCollection.addCrossImports() goes into infinite recursion ending with a StackOverflowError.
> Sample stack (before the error):
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addOneSchemaCrossImports(XmlSchema) line: 342	
> 	SchemaCollection.addCrossImports() line: 321	
> 	Databinding(AegisDatabinding).createSchemas(Service, Set<Type>) line: 504	
> 	Databinding(AegisDatabinding).initialize(Service) line: 285	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).buildServiceFromWSDL(String) line: 346	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).initializeServiceModel() line: 442	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).create() line: 195	
> 	JaxWsServiceFactoryBean.create() line: 163	
> 	JaxWsClientFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoint() line: 100	
> 	JaxWsClientFactoryBean(ClientFactoryBean).create() line: 52	
> 	JaxWsProxyFactoryBean(ClientProxyFactoryBean).create() line: 102	
> 	JaxWsProxyFactoryBean.create() line: 115	
> ...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (CXF-2418) SchemaCollection throws StackOverflowError when schema contains circular reference

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-2418?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Daniel Kulp reassigned CXF-2418:
--------------------------------

    Assignee: Daniel Kulp

> SchemaCollection throws StackOverflowError when schema contains circular reference
> ----------------------------------------------------------------------------------
>
>                 Key: CXF-2418
>                 URL: https://issues.apache.org/jira/browse/CXF-2418
>             Project: CXF
>          Issue Type: Bug
>          Components: Aegis Databinding
>    Affects Versions: 2.2.3
>            Reporter: Fried Hoeben
>            Assignee: Daniel Kulp
>         Attachments: cxf-schemaCollection.patch
>
>
> When a schema contains a reference to an element inside itself, or there is another circular reference between schemas,  SchemaCollection.addCrossImports() goes into infinite recursion ending with a StackOverflowError.
> Sample stack (before the error):
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addElementCrossImportsElement(XmlSchema, XmlSchemaObject) line: 353	
> 	SchemaCollection.addCrossImportsSequence(XmlSchema, XmlSchemaSequence) line: 376	
> 	SchemaCollection.addCrossImportsType(XmlSchema, XmlSchemaType) line: 366	
> 	SchemaCollection.addOneSchemaCrossImports(XmlSchema) line: 342	
> 	SchemaCollection.addCrossImports() line: 321	
> 	Databinding(AegisDatabinding).createSchemas(Service, Set<Type>) line: 504	
> 	Databinding(AegisDatabinding).initialize(Service) line: 285	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).buildServiceFromWSDL(String) line: 346	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).initializeServiceModel() line: 442	
> 	JaxWsServiceFactoryBean(ReflectionServiceFactoryBean).create() line: 195	
> 	JaxWsServiceFactoryBean.create() line: 163	
> 	JaxWsClientFactoryBean(AbstractWSDLBasedEndpointFactory).createEndpoint() line: 100	
> 	JaxWsClientFactoryBean(ClientFactoryBean).create() line: 52	
> 	JaxWsProxyFactoryBean(ClientProxyFactoryBean).create() line: 102	
> 	JaxWsProxyFactoryBean.create() line: 115	
> ...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.