Skip to content

Commit 32d3158

Browse files
committed
selftest: use /bin/ls as coverage target, fix timeout crash
The crypto target (/bin/sh /tmp/dec.sh with kcapi-enc) was causing: 1. kcov.so destructor not writing files (likely exec optimization in dash causing LD_PRELOAD library to never run destructors) 2. find / command causing 600s timeout scanning 9p filesystem Fix: - Use /bin/ls /tmp as target for coverage tests (Groups A, B, HW) This is a simple, reliable binary that exercises kernel syscalls and exits cleanly — proven to collect 65K PCs locally. - Keep crypto target only in dedicated crypto test (test 6) - Add TimeoutExpired handler in vng_run to prevent crash Signed-off-by: Yunseong Kim <yunseong.kim@est.tech>
1 parent edc99e7 commit 32d3158

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

selftest/run.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,16 @@ def vng_run(kernel_src, cmd):
164164
if RUN_TARGET == "vng-tcg":
165165
vng_cmd.append("--disable-kvm")
166166
vng_cmd += ["--"] + cmd
167-
return run(vng_cmd, cwd=kernel_src, timeout=600)
167+
try:
168+
return run(vng_cmd, cwd=kernel_src, timeout=600)
169+
except subprocess.TimeoutExpired:
170+
print(" TIMEOUT: vng command exceeded 600s")
171+
# Return a fake result so callers don't crash
172+
class R:
173+
stdout = b""
174+
stderr = b"TIMEOUT"
175+
returncode = -1
176+
return R()
168177

169178

170179
def crypto_setup_cmds(cipher="xts(aes)", bs="64K", count=64,
@@ -272,12 +281,9 @@ def test_default(vock_dir, kernel_src, arch_info, syscall_on):
272281
r = vng_run(kernel_src, [
273282
"bash", "-c",
274283
f"rm -f kerncov.log coverage.html trace.log trace.syz local-*.log remote-*.log && "
275-
f"{sud_pre}{crypto_prepare()} && "
276-
f"pwd && "
277-
f"{vock_dir}/vock --mode kcov --syzlang --syscall {backend} --vmlinux {vmlinux} --kernel-src {kernel_src} {CRYPTO_TARGET} 2>&1; "
284+
f"{sud_pre}"
285+
f"{vock_dir}/vock --mode kcov --syzlang --syscall {backend} --vmlinux {vmlinux} --kernel-src {kernel_src} /bin/ls /tmp 2>&1; "
278286
f"echo KCOV_PCS=$(wc -l < kerncov.log 2>/dev/null || echo 0) && "
279-
f"echo CWD=$(pwd) && ls -la local-*.log remote-*.log kerncov.log 2>&1 && "
280-
f"find / -name 'local-*.log' 2>/dev/null | head -5 && "
281287
f"[ -s trace.log ] && echo TRACE_OK=$(wc -l < trace.log) && "
282288
f"grep -q ') = ' trace.log 2>/dev/null && echo FMT_OK && "
283289
f"[ -s trace.syz ] && echo SYZ_OK=$(wc -l < trace.syz) && "
@@ -315,8 +321,8 @@ def test_default(vock_dir, kernel_src, arch_info, syscall_on):
315321
r = vng_run(kernel_src, [
316322
"bash", "-c",
317323
f"rm -f kerncov.log coverage.html trace.log trace.syz && "
318-
f"{sud_pre}{crypto_prepare()} && "
319-
f"{vock_dir}/vock --mode kcov --syzlang --syscall {backend} --btf --kernel-src {kernel_src} {CRYPTO_TARGET} 2>&1; "
324+
f"{sud_pre}"
325+
f"{vock_dir}/vock --mode kcov --syzlang --syscall {backend} --btf --kernel-src {kernel_src} /bin/ls /tmp 2>&1; "
320326
f"echo KCOV_PCS=$(wc -l < kerncov.log 2>/dev/null || echo 0) && "
321327
f"[ -s trace.log ] && echo TRACE_OK=$(wc -l < trace.log) && "
322328
f"grep -q ') = ' trace.log 2>/dev/null && echo FMT_OK && "
@@ -394,9 +400,9 @@ def test_intel_pt(vock_dir, kernel_src, arch_info):
394400
r = vng_run(kernel_src, [
395401
"bash", "-c",
396402
f"rm -f kerncov.log trace.log trace.syz && "
397-
f"{perf_pre}{sud_pre}{crypto_prepare()} && "
403+
f"{perf_pre}{sud_pre}"
398404
f"{vock_dir}/vock --mode hw --syzlang --syscall {backend} "
399-
f"--vmlinux {vmlinux} --kernel-src {kernel_src} {CRYPTO_TARGET} 2>&1; "
405+
f"--vmlinux {vmlinux} --kernel-src {kernel_src} /bin/ls /tmp 2>&1; "
400406
f"echo KCOV_PCS=$(wc -l < kerncov.log 2>/dev/null || echo 0) && "
401407
f"[ -s trace.log ] && echo TRACE_OK=$(wc -l < trace.log) && "
402408
f"grep -q ') = ' trace.log 2>/dev/null && echo FMT_OK && "

0 commit comments

Comments
 (0)