[jboss-jira] [JBoss JIRA] Commented: (JBRULES-1060) Unexpected exit with no stack trace or other information

Michael Neale (JIRA) jira-events at lists.jboss.org
Tue Aug 21 03:39:18 EDT 2007


    [ http://jira.jboss.com/jira/browse/JBRULES-1060?page=comments#action_12373057 ] 
            
Michael Neale commented on JBRULES-1060:
----------------------------------------

yes I can run this to completion if I give it -Xmx500M (not sure what else will work, I just tried it):

Something is up
Run time (milliseconds): 21100
Finished problem at Tue Aug 21 17:41:11 EST 2007

This is a combination explosion, but it certainly works. In my case, I didn't see an OOME reported as well (on Linux, Fedora 7, JSE5). I will try on the mac as well, but it seems in some cases OOME is being swallowed somehow before it is being reported. Perhaps command line it wil show it (I was running it from within eclipse).

> Unexpected exit with no stack trace or other information
> --------------------------------------------------------
>
>                 Key: JBRULES-1060
>                 URL: http://jira.jboss.com/jira/browse/JBRULES-1060
>             Project: JBoss Rules
>          Issue Type: Bug
>      Security Level: Public(Everyone can see) 
>    Affects Versions:  4.0.0.GA
>         Environment: Windows XP sp2, 1GB RAM, Sun Java JDK 1.5.0_11, Eclipse 3.3 Build id: I20070621-1340,  JBOSS Rules feature/plugin 4.0.0
>            Reporter: christopher barham
>         Assigned To: Edson Tirelli
>             Fix For: 4.0.1
>
>         Attachments: strangeExit.zip
>
>
> When inserting a number of facts, (seems to be somewhere around 450 facts in this test example here), the rules system exits unexpectedly with no stack trace or other information.  I pared down my code to a simple example that demonstrates this below.  I can get it to run normally if I insert 450 facts, however 475 or above exhibits this unexpected system exit.  I am running this from Eclipse.
> Garbage.java (fact bean):
> package com.sample;
> public class Garbage {
>     private char id;
>     private int someNumber;
>     public Garbage(char garbageId, int someNumber) {
>         setSomeNumber(someNumber);
>         setId(garbageId);
>     }
>     public char getId() {
>         return id;
>     }
>     public int getSomeNumber() {
>         return someNumber;
>     }
>     public void setId(char id) {
>         this.id = id;
>     }
>     public void setSomeNumber(int someNumber) {
>         this.someNumber = someNumber;
>     }
>     @Override
>     public String toString() {
>         StringBuilder sb = new StringBuilder();
>         sb.append("a Garbage { ");
>         sb.append("someNumber= ");
>         sb.append(getSomeNumber());
>         sb.append(", id= ");
>         sb.append(getId());
>         sb.append(" }");
>         return sb.toString();
>     }
> }
> StrangeExit.Java (Rule Engine startup and fact insertion):
> package com.sample;
> import java.io.InputStreamReader;
> import java.io.Reader;
> import org.drools.RuleBase;
> import org.drools.RuleBaseFactory;
> import org.drools.WorkingMemory;
> import org.drools.compiler.PackageBuilder;
> import org.drools.event.DebugWorkingMemoryEventListener;
> import org.drools.rule.Package;
> public class StrangeExit {
>     public static final void main(String[] args) {
>         try {
>             long startTime = System.currentTimeMillis();
>             System.out.println("Starting problem at " + new java.util.Date());
>             RuleBase ruleBase = readRule();
>             WorkingMemory workingMemory = ruleBase.newStatefulSession();
>             workingMemory.addEventListener(new DebugWorkingMemoryEventListener());
>             assertAllFacts(workingMemory);
>             workingMemory.fireAllRules();
>             long stopTime = System.currentTimeMillis();
>             long runTime = stopTime - startTime;
>             System.out.println("Run time (milliseconds): " + runTime);
>             System.out.println("Finished problem at " + new java.util.Date());
>         } catch (Throwable t) {
>             t.printStackTrace();
>         }
>     }
>     private static void assertAllFacts(WorkingMemory workingMemory) {
>         for (int i = 1; i <= 3; i++) {
>             for (int j = 1; j <= 475; j++) {
>                 Garbage gar = new Garbage((char)(i + 64), j);
>                 workingMemory.insert(gar);
>             }
>         }
>     }
>     private static RuleBase readRule() throws Exception {
>         Reader source = new InputStreamReader(StrangeExit.class.getResourceAsStream("/strange.drl"));
>         PackageBuilder builder = new PackageBuilder();
>         builder.addPackageFromDrl(source);
>         Package pkg = builder.getPackage();
>         RuleBase ruleBase = RuleBaseFactory.newRuleBase();
>         ruleBase.addPackage(pkg);
>         return ruleBase;
>     }
> }
> The Rule itself:
> package com.sample
> import com.sample.Garbage;
> rule "Weird exit with no stack trace error"
>   when
>     $garA : Garbage(  )
>     $garB : Garbage( id == 'B' , someNumber >= $garA.someNumber )
>   then
>     System.out.println("Something is up");
> end

-- 
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