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

StackOverflow in hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • core
    • Debian, Jenkins 1.640, gitlab-plugin 1.1.28, git-plugin 2.4.0

      After upgrading to v1.640 I get error reports after enabling the GIT Source Code Management and trying to save a job.

          [JENKINS-31954] StackOverflow in hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert

          Jesse Glick added a comment -

          Reproduced also with RunParameterDefinition, which has the benefit of being in core. For reasons I do not yet understand, the stack overflow is not reproducible in most cases of newInstance overrides calling bindJSON, even other ParameterDefinition implementations.

          Jesse Glick added a comment - Reproduced also with RunParameterDefinition , which has the benefit of being in core. For reasons I do not yet understand, the stack overflow is not reproducible in most cases of newInstance overrides calling bindJSON , even other ParameterDefinition implementations.

          Roberto Sena added a comment -

          The only specific condition I found was when I saved an existing job. This is the process I did:

          • Upgrade to 1.641
          • Try to configure an existing job and pressed save - Got the error
          • Cloned the job, removed the items one by one untill it let me save. Once 'Invoke top-level Maven Targets' was removed I was able to save successfully
          • I created a new job and added 'Invoke top-level Maven Targets' and was able to save successfuly.
          • Downgraded to 1.640, and reproduced the same results as above.
          • Reverted back to version 1.636 where everything worked
            Thats the only case I tried as I need to continue configuring jobs.

          Roberto Sena added a comment - The only specific condition I found was when I saved an existing job. This is the process I did: Upgrade to 1.641 Try to configure an existing job and pressed save - Got the error Cloned the job, removed the items one by one untill it let me save. Once 'Invoke top-level Maven Targets' was removed I was able to save successfully I created a new job and added 'Invoke top-level Maven Targets' and was able to save successfuly. Downgraded to 1.640, and reproduced the same results as above. Reverted back to version 1.636 where everything worked Thats the only case I tried as I need to continue configuring jobs.

          Code changed in jenkins
          User: Jesse Glick
          Path:
          core/src/main/java/hudson/model/Descriptor.java
          test/src/test/java/hudson/model/RunParameterDefinitionTest.java
          http://jenkins-ci.org/commit/jenkins/60a23e5bcad490ed3267bc418849d44da5ec791d
          Log:
          [FIXED JENKINS-31954] Stack overflow reconfiguring some settings where Descriptor.newInstance is gratuitously overridden.

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: core/src/main/java/hudson/model/Descriptor.java test/src/test/java/hudson/model/RunParameterDefinitionTest.java http://jenkins-ci.org/commit/jenkins/60a23e5bcad490ed3267bc418849d44da5ec791d Log: [FIXED JENKINS-31954] Stack overflow reconfiguring some settings where Descriptor.newInstance is gratuitously overridden.

          Code changed in jenkins
          User: Jesse Glick
          Path:
          changelog.html
          core/src/main/java/hudson/model/Descriptor.java
          test/src/test/java/hudson/model/RunParameterDefinitionTest.java
          http://jenkins-ci.org/commit/jenkins/ef5f6bf20d33964628467eb97d245564b622a35d
          Log:
          JENKINS-31954 Merged #1952.

          Compare: https://github.com/jenkinsci/jenkins/compare/8f38e206c234...ef5f6bf20d33

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Jesse Glick Path: changelog.html core/src/main/java/hudson/model/Descriptor.java test/src/test/java/hudson/model/RunParameterDefinitionTest.java http://jenkins-ci.org/commit/jenkins/ef5f6bf20d33964628467eb97d245564b622a35d Log: JENKINS-31954 Merged #1952. Compare: https://github.com/jenkinsci/jenkins/compare/8f38e206c234...ef5f6bf20d33

          Noam Manos added a comment -

          Still happens on Jenkins 1.641:

          javax.servlet.ServletException: java.lang.StackOverflowError
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
          at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249)
          at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53)
          at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876)
          at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649)
          at org.kohsuke.stapler.Stapler.service(Stapler.java:238)
          at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
          at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132)
          at com.smartcodeltd.jenkinsci.plugin.assetbundler.filters.LessCSS.doFilter(LessCSS.java:45)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:129)
          at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:59)
          at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:129)
          at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:123)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84)
          at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
          at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67)
          at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87)
          at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76)
          at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482)
          at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30)
          at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
          at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
          at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533)
          at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
          at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
          at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
          at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
          at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
          at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
          at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
          at org.eclipse.jetty.server.Server.handle(Server.java:370)
          at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
          at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
          at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
          at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
          at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
          at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
          at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
          at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
          at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
          at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
          at java.lang.Thread.run(Unknown Source)
          Caused by: java.lang.StackOverflowError
          at java.util.IdentityHashMap.hash(Unknown Source)
          at java.util.IdentityHashMap.containsKey(Unknown Source)
          at hudson.model.Descriptor$NewInstanceBindInterceptor.isApplicable(Descriptor.java:631)
          at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:660)
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
          at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:444)
          at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:391)
          at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:663)
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
          at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:444)
          at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:391)
          at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:663)
          at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404)
          at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400)
          at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:444)
          at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:391)
          ...

          Noam Manos added a comment - Still happens on Jenkins 1.641: javax.servlet.ServletException: java.lang.StackOverflowError at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) at org.kohsuke.stapler.MetaClass$6.doDispatch(MetaClass.java:249) at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:53) at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) at org.kohsuke.stapler.Stapler.service(Stapler.java:238) at javax.servlet.http.HttpServlet.service(HttpServlet.java:848) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132) at com.smartcodeltd.jenkinsci.plugin.assetbundler.filters.LessCSS.doFilter(LessCSS.java:45) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:129) at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:59) at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:129) at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:123) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1482) at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:533) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116) at org.eclipse.jetty.server.Server.handle(Server.java:370) at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489) at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960) at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021) at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865) at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240) at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82) at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668) at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52) at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.StackOverflowError at java.util.IdentityHashMap.hash(Unknown Source) at java.util.IdentityHashMap.containsKey(Unknown Source) at hudson.model.Descriptor$NewInstanceBindInterceptor.isApplicable(Descriptor.java:631) at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:660) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400) at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:444) at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:391) at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:663) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400) at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:444) at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:391) at hudson.model.Descriptor$NewInstanceBindInterceptor.onConvert(Descriptor.java:663) at org.kohsuke.stapler.RequestImpl$TypePair.convertJSON(RequestImpl.java:543) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:404) at org.kohsuke.stapler.RequestImpl.bindJSON(RequestImpl.java:400) at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:444) at hudson.tasks.Maven$DescriptorImpl.newInstance(Maven.java:391) ...

          nmanos pretty sure that build with fix hasn't been released yet

          Nathan Neulinger added a comment - nmanos pretty sure that build with fix hasn't been released yet

          Correction, looks like it's in 1.642. Did you test with 642 or 641?

          Nathan Neulinger added a comment - Correction, looks like it's in 1.642. Did you test with 642 or 641?

          Kanstantsin Shautsou added a comment - - edited

          nmanos 1.641 is also affected as it was written, if you follow GH commits you will see that fix was merged after 1.641 release, please don't reopen issue because of 1.641

          Kanstantsin Shautsou added a comment - - edited nmanos 1.641 is also affected as it was written, if you follow GH commits you will see that fix was merged after 1.641 release, please don't reopen issue because of 1.641

          nmanos please use jira markdown and wrap logs into special code or noformat blocks.

          Kanstantsin Shautsou added a comment - nmanos please use jira markdown and wrap logs into special code or noformat blocks.

          dogfood added a comment -

          Integrated in jenkins_2.0 #5
          [FIXED JENKINS-31954] Stack overflow reconfiguring some settings where (Revision 60a23e5bcad490ed3267bc418849d44da5ec791d)

          Result = SUCCESS
          jesse glick : 60a23e5bcad490ed3267bc418849d44da5ec791d
          Files :

          • core/src/main/java/hudson/model/Descriptor.java
          • test/src/test/java/hudson/model/RunParameterDefinitionTest.java

          dogfood added a comment - Integrated in jenkins_2.0 #5 [FIXED JENKINS-31954] Stack overflow reconfiguring some settings where (Revision 60a23e5bcad490ed3267bc418849d44da5ec791d) Result = SUCCESS jesse glick : 60a23e5bcad490ed3267bc418849d44da5ec791d Files : core/src/main/java/hudson/model/Descriptor.java test/src/test/java/hudson/model/RunParameterDefinitionTest.java

            jglick Jesse Glick
            bollenn Nico Bollen
            Votes:
            12 Vote for this issue
            Watchers:
            23 Start watching this issue

              Created:
              Updated:
              Resolved: