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.