Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-42277

java.lang.StackOverflowError while using emailext plugin

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • email-ext-plugin
    • None
    • Jenkins 2.32.2
      Email ext plugin 2.55

      At the end of my pipeline I want to send a Mail to see if my builds are successfull. Therefore I use the following groovy script:

      emailext (
      to: 'mail@example.com',
      subject: 'Job: ' + env.JOB_NAME + ' / ' +'Build #' + env.BUILD_NUMBER + ' / ' + ' Summary',
      body:'Integrity Checkout: '+ '\t\t\t' + checkoutStatus +'\n\n' + 'Build1: '+ '\t\t\t' + Build1 + '\n' 
                                                             + 'Build2 :'+ '\t' + Build2 + '\n'
                                                             + 'Build3 :'+ '\t' + Build3 + '\n'
                                                             + 'Build4 :'+ '\t' + Build4 + '\n'
                                                             + 'Build5 :'+ '\t' + Build5 + '\n'
                                                             + 'Build6 :'+ '\t' + Build6 + '\n'
                                                             + 'Build7 :'+ '\t' + Build7 + '\n'
                                                             + 'Build8 :'+ '\t' + Build8 + '\n'
                                                             + 'Build9 :'+ '\t' + Build9 + '\n'
                                                             + 'Build10:'+ '\t' + Build10 + '\n'
                                                             + 'Build11:'+ '\t' + Build11 + '\n'
                                                             + 'Build12:'+ '\t' + Build12 + '\n'
                                                             + 'Build13:'+ '\t' + Build13 + '\n'
                                                             + 'Build14:'+ '\t' + Build14 + '\n'
                                                             + 'Build15:'+ '\t' + Build15 + '\n'
                                                             + 'Build16:'+ '\t' + Build16,
      attachLog: true,
      compressLog: true
      )
      

      Basically the code is working but only if I comment out the last line (build16). The variable is correctly assigned. But if I execute the code I get a java.lang.StackOverflowError. (over 1000 lines)

      short snipped:

      java.lang.StackOverflowError
      at java.lang.Exception.<init>(Unknown Source)
      at java.lang.ReflectiveOperationException.<init>(Unknown Source)
      at java.lang.reflect.InvocationTargetException.<init>(Unknown Source)
      at sun.reflect.GeneratedMethodAccessor4094.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
      at com.cloudbees.groovy.cps.CpsTransformer$_visitBinaryExpression_closure26.doCall(CpsTransformer.groovy)
      at sun.reflect.GeneratedMethodAccessor4092.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
      at com.cloudbees.groovy.cps.CpsTransformer.makeChildren(CpsTransformer.groovy:355)
      at sun.reflect.GeneratedMethodAccessor3945.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
      at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
      at com.cloudbees.groovy.cps.CpsTransformer.makeNode(CpsTransformer.groovy:330)
      at sun.reflect.GeneratedMethodAccessor3944.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
      at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174)
      at com.cloudbees.groovy.cps.CpsTransformer.visitBinaryExpression(CpsTransformer.groovy:636)
      at org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:51)
      at org.codehaus.groovy.ast.expr.BinaryExpression$visit.call(Unknown Source)
      at com.cloudbees.groovy.cps.CpsTransformer.visit(CpsTransformer.groovy:290)
      at sun.reflect.GeneratedMethodAccessor3946.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:384)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
      at com.cloudbees.groovy.cps.CpsTransformer$_visitBinaryExpression_closure26.doCall(CpsTransformer.groovy:630)
      at sun.reflect.GeneratedMethodAccessor4094.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
      at com.cloudbees.groovy.cps.CpsTransformer$_visitBinaryExpression_closure26.doCall(CpsTransformer.groovy)
      at sun.reflect.GeneratedMethodAccessor4092.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:294)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1024)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
      at com.cloudbees.groovy.cps.CpsTransformer.makeChildren(CpsTransformer.groovy:355)
      at sun.reflect.GeneratedMethodAccessor3945.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
      at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:166)
      at com.cloudbees.groovy.cps.CpsTransformer.makeNode(CpsTransformer.groovy:330)
      at sun.reflect.GeneratedMethodAccessor3944.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite$PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210)
      at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:174)
      at com.cloudbees.groovy.cps.CpsTransformer.visitBinaryExpression(CpsTransformer.groovy:636)
      at org.codehaus.groovy.ast.expr.BinaryExpression.visit(BinaryExpression.java:51)
      at org.codehaus.groovy.ast.expr.BinaryExpression$visit.call(Unknown Source)
      at com.cloudbees.groovy.cps.CpsTransformer.visit(CpsTransformer.groovy:290)
      at sun.reflect.GeneratedMethodAccessor3946.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      at java.lang.reflect.Method.invoke(Unknown Source)
      

          [JENKINS-42277] java.lang.StackOverflowError while using emailext plugin

          Simon Beyer added a comment - - edited

          Solved the problem. The massive amount of '+' operators caused the Overflow. Now I am usiung

          java.lang.StringBuilder
          

          and

          .append
          

          to build my output string.

          Simon Beyer added a comment - - edited Solved the problem. The massive amount of '+' operators caused the Overflow. Now I am usiung java.lang.StringBuilder and .append to build my output string.

            swanh Simon Beyer
            swanh Simon Beyer
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: