[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-2166) Long "in" lists in queries results in a Java stack overflow exception.
Shawn Clowater (JIRA)
noreply at atlassian.com
Thu Apr 1 14:18:32 EDT 2010
[ http://opensource.atlassian.com/projects/hibernate/browse/HHH-2166?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=36069#action_36069 ]
Shawn Clowater commented on HHH-2166:
-------------------------------------
I am also getting this test failure in 3.5.0 final when trying to do a clean build.
Windows XP SP2, 1.5 u14 JDK.
I assume I can just disable this test and not worry too much about it?
Stack is the same as reported by Manuel Above
java.lang.StackOverflowError
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:394)
at java.lang.StringBuffer.append(StringBuffer.java:225)
at antlr.BaseAST.toStringList(BaseAST.java:341)
at antlr.BaseAST.toStringList(BaseAST.java:347)
at antlr.BaseAST.toStringList(BaseAST.java:347)
at antlr.BaseAST.toStringList(BaseAST.java:347)
at antlr.BaseAST.toStringList(BaseAST.java:347)
at antlr.BaseAST.toStringList(BaseAST.java:347)
at antlr.BaseAST.toStringList(BaseAST.java:347)
at antlr.BaseAST.toStringList(BaseAST.java:347)
at antlr.BaseAST.toStringList(BaseAST.java:347)
> Long "in" lists in queries results in a Java stack overflow exception.
> ----------------------------------------------------------------------
>
> Key: HHH-2166
> URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-2166
> Project: Hibernate Core
> Issue Type: Bug
> Components: core
> Affects Versions: 3.2.0.ga
> Environment: Hibernate 3.2.0.cr3 through 3.2.0.ga (at least). Any standard deployment of Sun's JVM on Windows, Linux, or Mac OS X (and presumably other platforms like Solaris)
> Reporter: Philip R. "Pib" Burns
> Assignee: Strong Liu
> Fix For: 3.2.x, 3.3.x, 3.5.0-Beta-3
>
> Attachments: NodeTraverser.java
>
> Original Estimate: 1 day
> Remaining Estimate: 1 day
>
> With Hibernate 320ga a long "in" list can result in a stack overflow error during the parsing stage. For example, a query element like
> where x in (:x)
> or a manually constructed
> where x in (1,2,3 .....)
> can generate a stack overflow if the number of elements referenced by x exceeds a number dependent upon the amount of available stack space. For many JVMs, the limit is between 9,000 and 10,000 assuming a relatively empty stack at the point of query execution. We have applications which occasionally use lists several times this size.
> The stack overflow occurs in org.hibernate.hql.ast.util.NodeTraverser which uses a recursive algorithm to walk a parse tree. Long "in" lists generate a subtree of depth about equal to the number of elements in the list. A sufficiently long list results in a stack overflow when NodeTraverser's internal method visitDepthFirst calls itself too many times.
> The solution is to replace the recursive tree walking strategy with an iterative one that does not use up stack space. I am attaching the source for a replacement version of . NodeTraverser which implements the iterative tree walking method.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the hibernate-issues
mailing list