-
Bug
-
Resolution: Fixed
-
Blocker
-
None
Due to https://github.com/jenkinsci/jenkins/commit/85e13303f8cfbebeb7dab347fda8ccf4069070b6 , any view using Other Views filter now gets a StackOverflowError.
The reason is that it uses a wrong way of retrieving the referenced view, by getting first 'all' the views.
- StackOverflow.txt
- 73 kB
- stacktraceflow.txt
- 67 kB
[JENKINS-13464] Using Other Views filter, I'm getting a stack overflow error after update to Jenkins 1.459
I tried this again against version 1.459 and still could not reproduce. I would like to fix this bug ASAP, but need help reproducing it.
We were hit by this too - thanks for reporting. It basically cause intermittent hungs, the "no HTTP reply kind" (https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+is+hanging).
I haven't found a good way to reproduce this yet, but I'm getting a slightly different log for the endless recursion - attaching. Extract:
at hudson.views.AbstractIncludeExcludeJobFilter.filter(AbstractIncludeExcludeJobFilter.java:57)
at hudson.model.ListView.getItems(ListView.java:162)
at hudson.model.ListView.getItems(ListView.java:58)
at hudson.security.AuthorizationStrategy$1.hasPermission(AuthorizationStrategy.java:103)
at hudson.security.ACL.hasPermission(ACL.java:65)
at hudson.model.View.hasPermission(View.java:503)
at hudson.model.ViewGroupMixIn.getViews(ViewGroupMixIn.java:115)
at jenkins.model.Jenkins.getViews(Jenkins.java:1370)
at hudson.views.OtherViewsFilter.getAllViews(OtherViewsFilter.java:148)
at hudson.views.UnclassifiedJobsFilter.doFilter(UnclassifiedJobsFilter.java:27)
at hudson.views.AbstractIncludeExcludeJobFilter.filter(AbstractIncludeExcludeJobFilter.java:57)
Do you have reproduced this issue recently? If yes, with which versions of Jenkins and of the plugins?
We just hit this on 1.519 with the same stack trace, stuck in a recursive loop around OtherViewsFilter. Removing the other views filter that we were using (and didn't really need) made it go away.
I believe my installation is getting this issue. I have no other view filter plugin installed to my knowledge.
Jenkins ver.: 1.532.3
View Job Filters ver.: 1.26
build-flow ver. 0.11.1
More info can be provided if needed just ask. I will update the you if I figure out how to trigger the issue.
Apr 16, 2014 7:51:55 AM hudson.ExpressionFactory2$JexlExpression evaluate
WARNING: Caught exception evaluating: it.allViewsAsJson in /jenkins/job/jobname/descriptorByName/com.cloudbees.plugins.flow.BuildFlow/checkDsl. Reason: java.lang.reflect.InvocationTargetException
java.lang.reflect.InvocationTargetException
at sun.reflect.GeneratedMethodAccessor200.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.commons.jexl.util.PropertyExecutor.execute(PropertyExecutor.java:125)
at org.apache.commons.jexl.util.introspection.UberspectImpl$VelGetterImpl.invoke(UberspectImpl.java:314)
at org.apache.commons.jexl.parser.ASTArrayAccess.evaluateExpr(ASTArrayAccess.java:185)
at org.apache.commons.jexl.parser.ASTIdentifier.execute(ASTIdentifier.java:75)
at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83)
at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57)
at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51)
at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80)
at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74)
at org.apache.commons.jelly.parser.EscapingExpression.evaluate(EscapingExpression.java:24)
at org.apache.commons.jelly.impl.ExpressionScript.run(ExpressionScript.java:66)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
at org.kohsuke.stapler.jelly.IncludeTag.doTag(IncludeTag.java:147)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.TagSupport.invokeBody(TagSupport.java:161)
at org.apache.commons.jelly.tags.core.ForEachTag.doTag(ForEachTag.java:150)
at org.apache.commons.jelly.impl.TagScript.run(TagScript.java:269)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.kohsuke.stapler.jelly.ReallyStaticTagLibrary$1.run(ReallyStaticTagLibrary.java:99)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.CallTagLibScript.run(CallTagLibScript.java:120)
at org.apache.commons.jelly.impl.ScriptBlock.run(ScriptBlock.java:95)
at org.apache.commons.jelly.tags.core.CoreTagLibrary$2.run(CoreTagLibrary.java:105)
at org.kohsuke.stapler.jelly.JellyViewScript.run(JellyViewScript.java:81)
at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:63)
at org.kohsuke.stapler.jelly.DefaultScriptInvoker.invokeScript(DefaultScriptInvoker.java:53)
at org.kohsuke.stapler.jelly.JellyFacet$1.dispatch(JellyFacet.java:95)
at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:728)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:858)
at org.kohsuke.stapler.Stapler.invoke(Stapler.java:631)
at hudson.init.impl.InstallUncaughtExceptionHandler$1.reportException(InstallUncaughtExceptionHandler.java:25)
at org.kohsuke.stapler.compression.CompressionFilter.reportException(CompressionFilter.java:63)
at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:55)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81)
at winstone.FilterConfiguration.execute(FilterConfiguration.java:194)
at winstone.RequestDispatcher.doFilter(RequestDispatcher.java:366)
at winstone.RequestDispatcher.forward(RequestDispatcher.java:331)
at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:227)
at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
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 sun.nio.cs.StreamEncoder.implFlush(Unknown Source)
at sun.nio.cs.StreamEncoder.flush(Unknown Source)
at java.io.OutputStreamWriter.flush(Unknown Source)
at java.util.logging.StreamHandler.flush(Unknown Source)
at java.util.logging.ConsoleHandler.publish(Unknown Source)
at java.util.logging.Logger.log(Unknown Source)
at java.util.logging.Logger.doLog(Unknown Source)
at java.util.logging.Logger.log(Unknown Source)
at java.util.logging.Logger.finer(Unknown Source)
at hudson.security.SidACL._hasPermission(SidACL.java:71)
at hudson.security.SidACL.hasPermission(SidACL.java:51)
at hudson.security.ACL.hasPermission(ACL.java:64)
at hudson.model.AbstractItem.hasPermission(AbstractItem.java:448)
at jenkins.model.Jenkins.getItems(Jenkins.java:1368)
at jenkins.model.Jenkins.getItems(Jenkins.java:311)
at hudson.model.Items.getAllItems(Items.java:253)
at hudson.model.ListView.getItems(ListView.java:167)
at hudson.model.ListView.getItems(ListView.java:60)
at hudson.security.AuthorizationStrategy$1.hasPermission(AuthorizationStrategy.java:104)
at hudson.security.ACL.hasPermission(ACL.java:64)
at hudson.model.View.hasPermission(View.java:580)
at hudson.model.ViewGroupMixIn.getViews(ViewGroupMixIn.java:115)
at jenkins.model.Jenkins.getViews(Jenkins.java:1461)
at hudson.views.OtherViewsFilter.getAllViews(OtherViewsFilter.java:152)
at hudson.views.UnclassifiedJobsFilter.doFilter(UnclassifiedJobsFilter.java:27)
at hudson.views.AbstractIncludeExcludeJobFilter.filter(AbstractIncludeExcludeJobFilter.java:57)
at hudson.model.ListView.getItems(ListView.java:180)
at hudson.model.ListView.getItems(ListView.java:60)
at hudson.security.AuthorizationStrategy$1.hasPermission(AuthorizationStrategy.java:104)
at hudson.security.ACL.hasPermission(ACL.java:64)
at hudson.model.View.hasPermission(View.java:580)
at hudson.model.ViewGroupMixIn.getViews(ViewGroupMixIn.java:115)
at jenkins.model.Jenkins.getViews(Jenkins.java:1461)
at hudson.views.OtherViewsFilter.getAllViews(OtherViewsFilter.java:152)
at hudson.views.UnclassifiedJobsFilter.doFilter(UnclassifiedJobsFilter.java:27)
at hudson.views.AbstractIncludeExcludeJobFilter.filter(AbstractIncludeExcludeJobFilter.java:57)
at hudson.model.ListView.getItems(ListView.java:180)
at hudson.model.ListView.getItems(ListView.java:60)
at hudson.security.AuthorizationStrategy$1.hasPermission(AuthorizationStrategy.java:104)
I see the error clearly documented in this ticket, but I cannot reproduce it. Is that commit you point to in GIT been released as part of the latest version of Jenkins? I installed the latest version of Jenkins (1.461) and the latest version of the Sectioned view plugin (because that is what shows up in the stack overflow attachment), but no combination of views and Other Views filter causes the issue. Can you provide me some more details so I can reproduce locally? Thanks!
(edit: I re-read the name of the ticket, and I'm going to try on this exact version 1.459 of Jenkins first)