You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Jochen Theodorou (JIRA)" <ji...@apache.org> on 2017/09/19 22:08:00 UTC

[jira] [Commented] (GROOVY-8324) Enabling groovy.indy.logging can lead to stack overflows

    [ https://issues.apache.org/jira/browse/GROOVY-8324?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16172423#comment-16172423 ] 

Jochen Theodorou commented on GROOVY-8324:
------------------------------------------

Wait.. do I get this right? You are running a program and you have indy logging enabled and this logging then leads to a stack overflow when trying to build a String containing a MethodType and the error goes away if you use @CompileStatic in your program and am I right in that the loop is completely java.lang space? That looks strange. Would it be possible for you to provide an example? Because like this I can only suspect that maybe this is due to a wrongly set inner class information or something alike, but that is just guessing.

> 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)