[ https://issues.apache.org/jira/browse/GROOVY-8324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16176930#comment-16176930 ]
Matt Whipple commented on GROOVY-8324: -------------------------------------- Your bet was correct...the logging was cycling on a getter trying to stringify the {{this}} argument where the toString() invoked that getter. I opened a PR for what seems like a reasonable way to avoid this by not logging the {{this}} argument: https://github.com/apache/groovy/pull/604 Sample output from the git project above: instance method: {noformat} INFO: ---------------------------------------------------- invocation of method 'getName' invocation type: METHOD sender: class gt.MyOtherObject targetType: (MyOtherObject)Object safe navigation: false thisCall: true spreadCall: false with 1 arguments (including 'this') {noformat} non-instance method (unchanged): {noformat} INFO: ---------------------------------------------------- invocation of method 'append' invocation type: METHOD sender: class gt.MyOtherObject targetType: (Object,Object)Object safe navigation: false thisCall: false spreadCall: false with 2 arguments argument[0] = gt.MyOtherObject( argument[1] = test0 {noformat} > Enabling groovy.indy.logging can lead to stack overflows > -------------------------------------------------------- > > Key: GROOVY-8324 > URL: https://issues.apache.org/jira/browse/GROOVY-8324 > Project: Groovy > Issue Type: Bug > Affects Versions: 2.4.12 > Reporter: Matt Whipple > Priority: Minor > Labels: invokedynamic > > Still digging through this a bit more, but while trying to diagnose > performance issues I enabled indy logging which led to: > {noformat} > ! Caused by: java.lang.StackOverflowError: null > ! at java.lang.Class.getEnclosingMethodInfo(Class.java:1072) > ! at java.lang.Class.getEnclosingClass(Class.java:1272) > ! at java.lang.Class.getSimpleBinaryName(Class.java:1443) > ! at java.lang.Class.getSimpleName(Class.java:1309) > ! at java.lang.invoke.MethodType.toString(MethodType.java:797) > ! at java.lang.String.valueOf(String.java:2982) <--- > Loops back to here > ! at java.lang.StringBuilder.append(StringBuilder.java:131) > ! at > org.codehaus.groovy.vmplugin.v7.Selector$MethodSelector.<init>(Selector.java:488) > ! at org.codehaus.groovy.vmplugin.v7.Selector.getSelector(Selector.java:98) > ! at > org.codehaus.groovy.vmplugin.v7.IndyInterface.selectMethod(IndyInterface.java:227) > ! at MyDomainClass.toString(MyDomainClass.groovy) > {noformat} > The domain class itself stringifies without issue, changing the class to use > {{@CompileStatic}} seems to have resolved this issue. It might be nice if > that specific log message could be toggled independently of the others to try > to avoid the possibility of blowing up while attempting to troubleshooting. > {noformat} > java version "1.8.0_45" > Java(TM) SE Runtime Environment (build 1.8.0_45-b14) > Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode) > {noformat} -- This message was sent by Atlassian JIRA (v6.4.14#64029)