I am seeing a StackOverflowException in
org.jboss.marshalling.river.RiverMarshaller in a declarative Jenkins
pipeline. The
interesting thing is that it occurs *only* just after having restarted
the Jenkins instance. After building it once or twice,
the next build usually works fine. Also when waiting a few minutes
after the Jenkins restart, the build seems to work fine.

I've boiled it down to this Jenkins Declarative Pipeline:

------------------
pipeline {

    agent any

    options {
        gitLabConnection('my-gitlab-connection')
        //skipDefaultCheckout() // if checkout should be done manually later one
        buildDiscarder(logRotator(artifactDaysToKeepStr: '',
artifactNumToKeepStr: '', daysToKeepStr: '185', numToKeepStr: ''))

        // Additionally this configuration is needed for git in
Jenkins job configuration:
        //   "Additional behaviours" > "Checkout to specific local branch"
    }

    tools {
        jdk 'jdk9'
        maven 'maven3.5.x'
    }

    parameters {
        booleanParam(defaultValue: false, description: '', name:
'DO_MAVEN_RELEASE')
    }

    stages {
        stage('Maven build') {
            when {
                expression {
                    // Skip build if build is triggered by branch
indexing (i.e. gitlab web hook) and commit
                    //  is from [maven-release-plugin], no need to build them.

                    // Inspired by
https://jenkins.io/doc/pipeline/examples/#get-build-cause
                    triggeredByBranchIndexing =
currentBuild.rawBuild.getCause(jenkins.branch.BranchIndexingCause) !=
null
                    grepExitStatus = sh(script: 'git log -1 | grep
maven-release-plugin', returnStatus: true)
                    return !triggeredByBranchIndexing ||
grepExitStatus == 1 // grep exit status is 0 if a line is selected
                }
            }

            environment {
                m2RepoIdentifier =
"${env.JOB_NAME}__${env.BRANCH_NAME}__${env.BUILD_NUMBER}"
            }

            steps {
                sleep 11
                script {
                    if (params.DO_MAVEN_RELEASE) {
                        echo "would mvn-release here, but skipping for
debug reasons, ask SteThu."
                    } else {
                        sleep 10
                        echo "would mvn-build here, but skipping for
debug reasons, ask SteThu."
                    }
                }
            }
        }
    }

    post {
        always {
            echo "Done with this pipeline, deleting workspace..."
            deleteDir()
        }
    }
}
------------------

When commenting out the when/expression section, I cannot reproduce
the issue anymore, so I'm guessing it has
to do with that groovy expression. But I can't see any serialization
problems with those local variables, it is
a boolean and an exit status.

Anything wrong there? Or should I create an issue?

Below is the relevant part of the console log of the build.

The environment is:
-Jenkins 2.101 on Linux (standalone installation)
-one master node and one slave node, error occurs on both of them
-latest plugins installed (Pipeline Declarative Plugin v1.2.6)

Any input appreciated!

 stefan.



------------------
...
[PIPELINE INIT OUTPUT CROPPED]
...
Commit message: "Jenkinsfile: Comment out commands again for debugging"
 > git rev-list --no-walk c8587524261fcd7f8de8b0f8854089c7cca2eb48 # timeout=10
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] timestamps
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Tool Install)
[Pipeline] tool
[Pipeline] envVarsForTool
[Pipeline] tool
[Pipeline] envVarsForTool
[Pipeline] }
[Pipeline] // stage
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Maven build)
[Pipeline] sh
22:53:28 [workspace] Running shell script
22:53:28 + git log -1
22:53:28 + grep maven-release-plugin
[Pipeline] withEnv
[Pipeline] {
[Pipeline] tool
[Pipeline] envVarsForTool
[Pipeline] tool
[Pipeline] envVarsForTool
[Pipeline] withEnv
[Pipeline] {
[Pipeline] End of Pipeline
[BFA] Scanning build for known causes...
[BFA] No failure causes found
[BFA] Done. 0s
java.lang.StackOverflowError
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:115)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
[the 4 lines above repeat around 100 times]     
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)
        at 
org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)
        at 
org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)
        at 
org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)
        at java.util.HashMap.internalWriteEntries(HashMap.java:1790)
        at java.util.HashMap.writeObject(HashMap.java:1363)
        at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at 
org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:273)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:976)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)
        at 
org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)
        at 
org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)
        at 
org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)
        at 
org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject(RiverWriter.java:140)
        at 
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:459)
        at 
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:435)
        at 
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgramIfPossible(CpsThreadGroup.java:423)
        at 
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:363)
        at 
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$100(CpsThreadGroup.java:82)
        at 
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:243)
        at 
org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:231)
        at 
org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
        at 
jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Finished: FAILURE

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/CABwQARsyHdugTSUsCx7n1uy4fG4e3LqUB8jP-9deiRqCm4Pi8w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to