Hi,

under load and only under load I observe failing test runs due to
java.io.NotSerializableException.
Since I have no backtrace and the usage of hudson.model.Hudson is not obvious
to me, I spend a lot of time trying to debug this failure.
How can I get more informations about this exception?
How can I debug such a thing?

Regards
    Bene

The pipeline code in charge is:
---8<---
#!/usr/bin/env groovy
// SPDX-License-Identifier: MIT
// Copyright (c) 2017,2018 Linutronix GmbH
/*
 * CI-RT cyclictest runner
 */

import de.linutronix.cirt.helper;

private runner(Map global, String target, String cyclictest) {

        unstash(global.STASH_PRODENV);

        def h = new helper();
        String[] properties = ["environment.properties",
                               "boot/${target}.properties",
                               "${cyclictest}.properties"];

        h.add2environment(properties);
        properties = null;

        def loadgen = h.getEnv("LOADGEN");
        loadgen?.trim();
        def interval = h.getEnv("INTERVAL");
        def limit = h.getEnv("LIMIT");
        def duration = h.getEnv("DURATION");

        println("cyclictest-runner: ${target} ${cyclictest} ${interval} 
${limit}\n${loadgen}");

        def config = h.getEnv("CONFIG");
        def overlay = h.getEnv("OVERLAY");
        h = null;
        def kernel = "${config}/${overlay}";
        def cyclictestdir = "results/${kernel}/${target}/${cyclictest}";
        kernel = null

        dir(cyclictestdir) {
                deleteDir();
                def content = """#! /bin/bash

# Exit bash script on error:
set -e

${loadgen ?: 'true'} &

# Output needs to be available in Jenkins as well - use tee
sudo cyclictest -q -m -Sp99 -D${duration} -i${interval} -h${limit} -b${limit} 
--notrace 2> >(tee histogram.log >&2) | tee histogram.dat
""";
                writeFile file:"histogram.sh", text:content;
                content = null;
                sh ". histogram.sh";
        }

        archiveArtifacts("${cyclictestdir}/histogram.*");

        stash(name: cyclictestdir.replaceAll('/','_'),
              includes: "${cyclictestdir}/histogram.*");

        /*
         * no mail notification here since test examination need
         * to run on master.
         * See cyclictest.groovy.
         */
}

def call(Map global, String target, String cyclictest) {

        node(target) {
                try {
                        dir("cyclictestRunner") {
                                deleteDir();
                                runner(global, target, cyclictest);
                        }
                } catch(Exception ex) {
                        println("cyclictest runner on ${target} failed:");
                        println(ex.toString());
                        println(ex.getMessage());
                        println(ex.getStackTrace());
                        error("cyclictest runner on ${target} failed.");
                }
        }
}
---8<---

The output:
---8<---
git://cvs/people/user/linux stable-maintenance-4.4.y-rt x86/qemu_x86_64 RT-full
Repository git://cvs/people/user/linux stable-maintenance-4.4.y-rt
Compile Job x86/qemu_x86_64 RT-full
Cloning the remote Git repository
Using shallow clone
Cloning repository git://cvs/people/user/linux
 > git init 
 > /home/jenkins/workspace/stable-maintenance-4.4.y-rt-RXGROPLWM5VM22QLANL7RI3UEU2RBYNY523T6TBDWRGAIZNWL4OQ/compiletestRunner/results/x86/qemu_x86_64/RT-full
 >  # timeout=10
ERROR: Reference path does not exist: /home/mirror/kernel
Fetching upstream changes from git://cvs/people/user/linux
 > git --version # timeout=10
 > git fetch --tags --progress git://cvs/people/user/linux 
 > +refs/heads/*:refs/remotes/origin/* --depth=1 # timeout=60
 > git config remote.origin.url git://cvs/people/user/linux # timeout=10
 > git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # 
 > timeout=10
 > git config remote.origin.url git://cvs/people/user/linux # timeout=10
Fetching upstream changes from git://cvs/people/user/linux
 > git fetch --tags --progress git://cvs/people/user/linux 
 > +refs/heads/*:refs/remotes/origin/* --depth=1 # timeout=60
 > git rev-parse origin/stable-maintenance-4.4.y-rt^{commit} # timeout=10
Checking out Revision bdfaf62feda1231b04e01223c29771f5961012a9 
(origin/stable-maintenance-4.4.y-rt)
 > git config core.sparsecheckout # timeout=10
 > git checkout -f bdfaf62feda1231b04e01223c29771f5961012a9
Commit message: "Linux 4.4.126-rt141"
[RT-full] Running shell script
+ '[' -d patches ']'
+ quilt push -a
Applying patch 
patches/builddeb--do-not-build-linux-headers-and-libc-headers-packages.patch
patching file scripts/package/builddeb

Now at patch 
patches/builddeb--do-not-build-linux-headers-and-libc-headers-packages.patch
[compile] Running shell script
+ git describe HEAD
v4.4.126-rt141
[compile] Running shell script
++ git rev-parse HEAD
+ echo TAGS_COMMIT=bdfaf62feda1231b04e01223c29771f5961012a9
[compile] Running shell script
++ git describe HEAD
+ echo TAGS_NAME=v4.4.126-rt141
[build] Running shell script
+ touch .config
hudson.model.Hudsoncompiletest runner failed:
java.io.NotSerializableException: hudson.model.Hudson
hudson.model.Hudson
[Ljava.lang.StackTraceElement;@789f2876
compiletest runner failed.
---8<---

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/20180404193332.5c53ab2c%40mitra.
For more options, visit https://groups.google.com/d/optout.

Reply via email to