Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 1.8.0
-
Fix Version/s: 2.0-beta-3, 1.7.11, 1.8.7
-
Component/s: None
-
Labels:None
-
Number of attachments :6
Description
For reference : http://groovy.329449.n5.nabble.com/StackOverflowError-when-dispatching-to-super-td4572268.html
If a package protected method written in a Java class is overriden in a Groovy class and that method calls super.method(), Groovy throws a stack overflow :
Parent.java
class Parent {
void someMethod(String param) { ... }
}
Child.groovy
class Child {
void someMethod(String param) { super.someMethod(param) }
}
java.lang.StackOverflowError at java.lang.Exception.<init>(Exception.java:77) at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:54) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128) at groovy.bugs.GroovyStackOverflowBug$Child.someMethod(GroovyStackOverflowBug.groovy:39) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128) at groovy.bugs.GroovyStackOverflowBug$Child.someMethod(GroovyStackOverflowBug.groovy:39) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90) at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233) at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1054) at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.invokeMethodOnSuperN(ScriptBytecodeAdapter.java:128) at groovy.bugs.GroovyStackOverflowBug$Child.someMethod(GroovyStackOverflowBug.groovy:39) at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source) ...
Adding a public or protected modifier to the super class solves the problem.
-
- 4922failure.patch
- 19/Jul/11 5:02 AM
- 2 kB
- Hamlet D'Arcy
-
- GROOVY-4922.patch
- 18/Jul/11 9:07 AM
- 5 kB
- Cedric Champeau
-
- GROOVY-4922-new.patch
- 18/Jul/11 11:56 AM
- 7 kB
- Cedric Champeau
-
Hide
- new_stackoverflow_example.zip
- 21/Jul/11 10:21 AM
- 35 kB
- Hamlet D'Arcy
-
- org/.svn/entries 0.3 kB
- org/.svn/all-wcprops 0.1 kB
- org/codehaus/.svn/all-wcprops 0.1 kB
- org/codehaus/.svn/entries 0.3 kB
- org/codehaus/groovy/.svn/all-wcprops 0.1 kB
- org/codehaus/groovy/.svn/entries 0.3 kB
- org/codehaus/groovy/ast/.svn/all-wcprops 0.1 kB
- org/codehaus/groovy/ast/.svn/entries 0.3 kB
- org/codehaus/.../expr/RegexExpression.java 2 kB
- org/codehaus/.../expr/RegexExpression.class 2 kB
- org/codehaus/groovy/.../.svn/all-wcprops 0.1 kB
- org/codehaus/groovy/.../.svn/entries 0.3 kB
- org/codehaus/.../ValueRecorder.class 1 kB
- org/codehaus/.../powerassert/Value.java 1 kB
- org/codehaus/.../ValueRecorder.java 1 kB
- org/codehaus/.../powerassert/Value.class 0.5 kB
- org/codehaus/groovy/.../expr/.svn/entries 0.4 kB
- org/codehaus/groovy/.../.svn/all-wcprops 0.3 kB
- org/codehaus/groovy/.../.svn/all-wcprops 0.5 kB
- org/codehaus/groovy/.../.svn/entries 0.6 kB
- org/.../RegexExpression.java.svn-base 2 kB
- org/codehaus/.../ValueRecorder.java.svn-base 1 kB
- org/codehaus/.../Value.java.svn-base 1 kB
- AssignCollectionUniqueAstVisitor.groovy 0.5 kB
- Runner.groovy 0.3 kB
- AssignCollectionUniqueAstVisitor.class 16 kB
- Runner.class 9 kB
- run.sh 0.6 kB
-
Hide
- stackoverflow-example.zip
- 21/Jul/11 6:06 AM
- 10 kB
- Hamlet D'Arcy
-
- stackoverflow-example/Runner.class 7 kB
- stackoverflow-example/Parent.java 0.1 kB
- stackoverflow-example/Runner.groovy 0.1 kB
- stackoverflow-example/ImplementationAsTypeAstVisitor.groovy 0.2 kB
- stackoverflow-example/ImplementationAsTypeAstVisitor.class 6 kB
- stackoverflow-example/Child.class 6 kB
- stackoverflow-example/Parent.class 0.4 kB
- stackoverflow-example/run.sh 0.1 kB
- stackoverflow-example/Child.groovy 0.1 kB
-
- test-reports.tar.gz
- 18/Jul/11 9:07 AM
- 329 kB
- Cedric Champeau