How to debug java.io.NotSerializableException: hudson.model.Hudson

67 views
Skip to first unread message

Benedikt Spranger

unread,
Apr 4, 2018, 2:12:18 PM4/4/18
to jenkins...@googlegroups.com, c...@linutronix.de
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<---

Reply all
Reply to author
Forward
0 new messages