[jboss-jira] [JBoss JIRA] Created: (JBRULES-946) RuleBase serialization fails with StackOverflowError

Alexandre Gattiker (JIRA) jira-events at lists.jboss.org
Mon Jun 25 09:56:25 EDT 2007


RuleBase serialization fails with StackOverflowError
----------------------------------------------------

                 Key: JBRULES-946
                 URL: http://jira.jboss.com/jira/browse/JBRULES-946
             Project: JBoss Rules
          Issue Type: Bug
      Security Level: Public (Everyone can see)
    Affects Versions: 4.0.0.MR2
            Reporter: Alexandre Gattiker
         Assigned To: Mark Proctor


I created 920 rules, all in this format, with different values in the string literals.

rule "Rule_1"
	when
		$g:Parent()
		$c:Child(parent==$g,code=="yyy1")
		Item(parentObject==$c,name=="xxx1", value == "1")
		Item(parentObject==$c,name=="xxx2",value == "1")
		Item(parentObject==$g,name=="xxx3",value == "200")
	then
		System.out.println("2");
end
With the following code, I create a RuleBase that I serialize.

RuleBase ruleBase = RuleBaseFactory.newRuleBase();
PackageBuilderConfiguration conf = new PackageBuilderConfiguration();
conf.setCompiler(PackageBuilderConfiguration.JANINO);
Reader source = new InputStreamReader(PolicyServiceImpl.class.getResourceAsStream(fileName));
PackageBuilder builder = new PackageBuilder(conf);
builder.addPackageFromDrl(source);
Package pkg = builder.getPackage();
ruleBase.addPackage(pkg);
//serialize RuleBase
File outFile = new File(f.getPath() + ".tmp");
FileOutputStream fout = new FileOutputStream(outFile);
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(ruleBase);
oos.close();

The serialization fails with the following exception. Otherwise the RuleBase is perfectly fine and working.


java.lang.StackOverflowError
	at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream$BlockDataOutputStream.write(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java(Compiled Code))
	at java.util.ArrayList.writeObject(ArrayList.java(Compiled Code))
	at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
	at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java(Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java(Inlined Compiled Code))
	at java.util.ArrayList.writeObject(ArrayList.java(Compiled Code))
	at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
	at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java(Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java(Inlined Compiled Code))
	at java.util.ArrayList.writeObject(ArrayList.java(Compiled Code))
	at sun.reflect.GeneratedMethodAccessor16.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java(Compiled Code))
	at java.lang.reflect.Method.invoke(Method.java(Compiled Code))
	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java(Compiled Code))
	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java(Compiled Code))
	at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java(Inlined Compiled Code))
(last four lines repeated over 1000 times)


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list