I will wait for you test case before start seriously looking into this. Here's something that might help. If you have a graph with a loop (A points to B and B points to A, directly or otherwise), and you launch a search like this: "//foo", the whole thing has a good chance of falling into an infinite loop, creating pointers of ever growing length. I have a plan to introduce some automated detection of this situation, but at this point it will simply lead to an OutOfMemoryError. Could this be it?
- Dmitri ----- Original Message ----- From: "Steve Pannier" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Monday, February 17, 2003 2:58 PM Subject: [JXPath] Infinite loop in iterator.hasNext() > I've run into a problem with iterating through the result set after > calling context.iterate(). As I'm iterating, the hasNext() method > in my while loop conditional seems to get into an infinite loop. > (I get several java.lang.OutOfMemoryError's - no stack trace > available.) I did get a stack dump by sending the Unix QUIT > signal to my running process, and the result of that is shown > here: > > . > . > . > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.NodePointer.clone(NodePointer.java:644) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.NodePointer.clone(NodePointer.java:644) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.NodePointer.clone(NodePointer.java:644) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.NodePointer.clone(NodePointer.java:644) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.NodePointer.clone(NodePointer.java:644) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.NodePointer.clone(NodePointer.java:644) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.NodePointer.clone(NodePointer.java:644) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.NodePointer.clone(NodePointer.java:644) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.model.beans.PropertyIterator.getNodePointer(Pro pertyIterator.java:152) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.axes.DescendantContext.nextNode(DescendantConte xt.java:151) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.EvalContext.nextSet(EvalContext.java:349) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.EvalContext.nextSet(EvalContext.java:355) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.axes.PredicateContext.nextSet(PredicateContext. java:201) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.EvalContext.performIteratorStep(EvalContext.jav a:192) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.EvalContext.hasNext(EvalContext.java:151) > Feb 17, 2003 12:29:18 PM CST: at > org.apache.commons.jxpath.ri.compiler.Expression$ValueIterator.hasNext(Expre ssion.java:171) > Feb 17, 2003 12:29:18 PM CST: at > com.jacada.ji.type.Util.doXPathAssignment(Util.java:866) > > > > Our context root is a Map, and we are trying to evaluate the > expression "//A/B[@attr='value']", where the "A/B" structure > is located at different levels throughout the Map. For example, > "/Foo/A/B", "/Foo/Bar/Baz/A/B", etc. > > I'm running with the nightly build commons-jxpath.jar. I was > first using the one from Jan 7, but downloaded the Feb 14 > version on Friday and saw no difference in behavior. > > I've seen this problem when running within our proprietary > runtime environment. I'm currently working on putting a > simple test case together that shows the problem. I had > my test case working on Friday, but I made some changes > to clean it up, and for some reason today I can't seem to > recreate the problem. I will forward it here once I get it > working again. > > > Steve Pannier > Jacada, Inc. > (763) 201-0002 Ext. 219 > [EMAIL PROTECTED] > http://www.jacada.com > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
