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 jenkinsci-users+unsubscr...@googlegroups.com.
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