[JBoss JIRA] Created: (JBPM-1145) Loops realized via a decision node will eventually cause a StackOverflow Exception
by R??diger Schmitz (JIRA)
Loops realized via a decision node will eventually cause a StackOverflow Exception
----------------------------------------------------------------------------------
Key: JBPM-1145
URL: http://jira.jboss.com/jira/browse/JBPM-1145
Project: JBoss jBPM
Issue Type: Bug
Components: Core Engine
Affects Versions: jBPM 3.1.4, jBPM 3.1
Reporter: R??diger Schmitz
Assigned To: Tom Baeyens
Executing a simple, iterative loop implemented with a decision node will cause a StackOverflowException (see below for stacktrace). Apparently the iterative calls are executing using recursive calls. This approach fails if a medium sized loop should be executed (a simple reproducing testcase only reached 161 loop iterations before failing). I see this implementation style as highly problematic when processing medium-sized quantities of input data...
java.lang.StackOverflowError
at java.lang.ClassLoader.findBootstrapClass(Native Method)
at java.lang.ClassLoader.findBootstrapClass0(ClassLoader.java:891)
at java.lang.ClassLoader.loadClass(ClassLoader.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
at org.hibernate.loader.Loader.loadCollection(Loader.java:1926)
at org.hibernate.loader.collection.CollectionLoader.initialize(CollectionLoader.java:71)
at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:520)
at org.hibernate.event.def.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:60)
at org.hibernate.impl.SessionImpl.initializeCollection(SessionImpl.java:1627)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:344)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:86)
at org.hibernate.collection.PersistentList.iterator(PersistentList.java:115)
at org.jbpm.graph.def.GraphElement.findExceptionHandler(GraphElement.java:358)
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:326)
at org.jbpm.graph.def.GraphElement.raiseException(GraphElement.java:343)
at org.jbpm.graph.def.Node.execute(Node.java:332)
at org.jbpm.graph.def.Node.enter(Node.java:316)
at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
<snip>...a ton of repeating stacktraceelements omitted... <snap>
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$cb94b78_3.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:119)
at org.jbpm.graph.def.Node.leave(Node.java:382)
at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:136)
at org.jbpm.graph.node.Decision.execute(Decision.java:145)
at org.jbpm.graph.def.Node.enter(Node.java:316)
at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$cb94b78_3.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:119)
at org.jbpm.graph.def.Node.leave(Node.java:382)
at org.jbpm.graph.def.Node.leave(Node.java:346)
at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:120)
at com.atos.worldline.kams.workflow.pf.BusinessObjectAccessHandler.doExecute(BusinessObjectAccessHandler.java:114)
at com.atos.worldline.kams.workflow.pf.AbstractBusinessMethodHandler.execute(AbstractBusinessMethodHandler.java:60)
at org.jbpm.graph.def.Action.execute(Action.java:123)
at org.jbpm.graph.def.Action$$FastClassByCGLIB$$7876e90e.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Action$$EnhancerByCGLIB$$889386ac_3.execute(<generated>)
at org.jbpm.graph.def.Node.execute(Node.java:328)
at org.jbpm.graph.def.Node.enter(Node.java:316)
at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$cb94b78_3.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:119)
at org.jbpm.graph.def.Node.leave(Node.java:382)
at org.jbpm.graph.exe.ExecutionContext.leaveNode(ExecutionContext.java:136)
at org.jbpm.graph.node.Decision.execute(Decision.java:145)
at org.jbpm.graph.def.Node.enter(Node.java:316)
at org.jbpm.graph.def.Node$$FastClassByCGLIB$$d187eeda.invoke(<generated>)
at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
at org.hibernate.proxy.CGLIBLazyInitializer.intercept(CGLIBLazyInitializer.java:161)
at org.jbpm.graph.def.Node$$EnhancerByCGLIB$$cb94b78_3.enter(<generated>)
at org.jbpm.graph.def.Transition.take(Transition.java:119)
at org.jbpm.graph.def.Node.leave(Node.java:382)
at org.jbpm.graph.def.Node.leave(Node.java:346)
--
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