I have come across a repeatable error and enclose the test case.
When the following xml is validated with a ValidatingStreamReader it causes an SOE. If the sample string is shorter, this does not happen. With more complex schemas, the string does not have to be as long to still cause an SOE.
I have not yet determined whether the complexity of the pattern is a factor.
Increasing the size of the stack using "java -Xss64M" does prevent this issue.

This only happens in Windows, Linux does not have this behaviour. This does not happen on any platform in java 5.

Note there were changes in java6 to the way stack sizes are implemented.
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6316197

I'm not sure if this is really a bug in xmlbeans since it does work on other platforms... is there any reason why it would use more stack space on windows? Is the default stack size different on windows and linux?

Thanks for your help

See stack trace below:
org.apache.xmlbeans.impl.regex.RangeToken.match(line 481)
org.apache.xmlbeans.impl.regex.RegularExpression.matchString(line 1673)
org.apache.xmlbeans.impl.regex.RegularExpression.matchString(line 1872)
org.apache.xmlbeans.impl.regex.RegularExpression.matchString(line 1872)
org.apache.xmlbeans.impl.regex.RegularExpression.matchString(line 1872)
org.apache.xmlbeans.impl.regex.RegularExpression.matchString(line 1872)
...
--
Chris
HMGCC


The information contained in this message (and any attachments) may
be confidential and is intended for the sole use of the named addressee.
Access, copying, alteration or re-use of the e-mail by anyone other
than the intended recipient is unauthorised. If you are not the intended
recipient please advise the sender immediately by returning the e-mail
and deleting it from your system.

This information may be exempt from disclosure under Freedom Of Information Act 2000 and may be subject to exemption under other UK information legislation. Refer disclosure requests to the Information Officer.


The original of this email was scanned for viruses by the Government Secure 
Intranet Anti-Virus service supplied by Cable&Wireless in partnership with 
MessageLabs. (CCTM Certificate Number 2006/04/0007.) On leaving the GSi this email 
was certified virus free.
Communications via the GSi may be automatically logged, monitored and/or 
recorded for legal purposes.
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.logging.Level;

import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;

import org.apache.xmlbeans.SchemaTypeLoader;
import org.apache.xmlbeans.XmlBeans;
import org.apache.xmlbeans.XmlError;
import org.apache.xmlbeans.XmlException;
import org.apache.xmlbeans.XmlObject;
import org.apache.xmlbeans.XmlOptions;
import org.apache.xmlbeans.impl.validator.ValidatingXMLStreamReader;


/**
 * SOETest.java
 * 27 Nov 2007
 * $Log: $
 */

/**
 * A class to demonstrate the StackOverflowError in Windows
 * using Java 1.6.0_03
 *
 */
public class SOETest {
        /**
         * A factory to get XML readers from, shared by package
         */
        static final XMLInputFactory XIF = XMLInputFactory.newInstance();
        
        private static File SCHEMA = new File("pattern.xsd");
        private static InputStream XML;
        /**
         * @param args
         * @throws IOException 
         * @throws XmlException 
         */
        public static void main(String[] args) throws IOException, XmlException 
{
                XML = new FileInputStream("pattern.xml");
                // load schema
                SchemaTypeLoader schemaLoader;
                XmlObject schema = XmlObject.Factory.parse(SCHEMA,
                                (new XmlOptions()).setLoadMessageDigest());

                //compile schema
                ArrayList<XmlError> compErrors = new ArrayList<XmlError>();
                XmlOptions schemaOptions = new 
XmlOptions().setErrorListener(compErrors);
                XmlObject[] schemas = new XmlObject[] { schema };
                schemaLoader = XmlBeans.compileXsd(schemas, null, 
schemaOptions);
                boolean ok = true;
                for (XmlError e : compErrors) {
                        switch (e.getSeverity()) {
                                case XmlError.SEVERITY_INFO:
//                                      no need to log
                                        break;
                                case XmlError.SEVERITY_WARNING:
                                        break;
                                default: 
                                        ok=false;
                        }
                }
                if (!ok) {
                        throw new XmlException("Invalid schema, validation 
aborted:"
                                        + SCHEMA.getName());
                }
                
                //prepare for validation
                XmlOptions valOpts = new XmlOptions().setLoadLineNumbers();
                ArrayList<XmlError> valErrors = new ArrayList<XmlError>();
                valOpts.setErrorListener(valErrors);
                
                
                //validate instance
                ValidatingXMLStreamReader vsr = new ValidatingXMLStreamReader();
                XMLStreamReader rdr=null;
                try {
                        rdr = XIF.createXMLStreamReader(XML);

                        // advance to first start element.
                        while (!rdr.isStartElement()) {
                                rdr.next();
                        }

                        vsr.init(rdr, true, null, schemaLoader, valOpts, 
valErrors);

                        while (vsr.hasNext()) {
                                vsr.next();
                        }
                        
                } catch (XMLStreamException e1) {
                        XML.close();
                        throw new XmlException("Error in XML Stream: ",e1);
                } catch (FactoryConfigurationError e1) {
                        // Should never happen
                        throw new IOException("Factory Configuration Error: "
                                        + e1.getLocalizedMessage());
                } catch (StackOverflowError soe) {
                        System.err.println("stack overflow caused on line: 
"+vsr.getLocation().getLineNumber());
                        soe.printStackTrace();
                        throw soe;
                }
                finally {
                        try {
                                vsr.close();
                                if (rdr!=null) {
                                        rdr.close();
                                }
                        } catch (XMLStreamException xe) {
                                System.err.println("Error closing XML Stream 
reader: "+xe.getLocalizedMessage());
                        }
                        XML.close();
                }

        }

}
<?xml version="1.0" encoding="UTF-8"?>
<regex xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:noNamespaceSchemaLocation="O:\cc\FFELs_5_int\FFELs\test\xml\pattern.xsd">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</regex>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="regex">
		<xs:simpleType>
					<xs:restriction base="HeaderInfo">
						<xs:maxLength value="10000"/>
					</xs:restriction>
				</xs:simpleType>
	</xs:element>
	<xs:simpleType name="HeaderInfo">
		<xs:annotation>
			<xs:documentation>
			        This type is used to restrict various header information to HeaderInfo
			        characters, digits, spaces (including CR and LF), slashes and punctuation.
		      </xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:pattern value="[a-zA-Z0-9\s\\\p{P}]*"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to