From 8ee09f05d15276b295ea199f08fb3bc2e2d16121 Mon Sep 17 00:00:00 2001 From: Denys Fedoryshchenko Date: Sat, 2 May 2026 15:06:44 +0300 Subject: ci: fail workflows on kernel issues found in dmesg Recently i wasted several hours searching bug in workflows/userspace. Turned out in dmesg we had highly visible WARNING that we dont watch. After each test run, dump dmesg and grep for canonical kernel-issue markers (WARNING, BUG, Oops, kernel panic, GPF, KASAN, kernel UBSAN, soft/hard lockup, hung tasks, bad page state, invalid opcode). Fail the job if any are present, with a GitHub Actions error annotation. Until now, kernel WARNs from out-of-tree drivers (e.g. vlan_mon tripping the new ETH_P_ALL ptype_head WARN_ON in 6.6+) were silently swallowed by the existing 'Display processes and dmesg after tests' steps -- visible only if a human inspected the log. The check runs with if: always() so it triggers both on test failure and on test completion. Applied to all four workflows that load kernel modules: run-tests-asan-ubsan.yml, run-tests.yml (Test-in-Qemu, Test-in-Alpine, Test-in-GH, Test-in-GH-Coverage), run-tests-32bit.yml, and run-tests-bigendian.yml. P.S. Some whitespace churn included. Signed-off-by: Denys Fedoryshchenko --- .github/workflows/run-tests-32bit.yml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to '.github/workflows/run-tests-32bit.yml') diff --git a/.github/workflows/run-tests-32bit.yml b/.github/workflows/run-tests-32bit.yml index 94d158ab..637a6951 100644 --- a/.github/workflows/run-tests-32bit.yml +++ b/.github/workflows/run-tests-32bit.yml @@ -155,8 +155,17 @@ jobs: - name: Run tests (all) timeout-minutes: 5 run: > - ssh -i ssh-key -p2222 root@localhost "cd accel-ppp/tests && + ssh -i ssh-key -p2222 root@localhost "cd accel-ppp/tests && python3 -m pytest -Wall --order-dependencies -v -m \"not chap_secrets\"" - name: Display processes and dmesg after tests if: ${{ always() }} run: ssh -i ssh-key -p2222 -o ConnectTimeout=5 root@localhost "ps aux | grep accel- && dmesg" + + - name: Check dmesg for kernel issues + if: ${{ always() }} + run: | + ssh -i ssh-key -p2222 -o ConnectTimeout=5 root@localhost "dmesg" > /tmp/dmesg.log + if grep -E 'WARNING:|BUG:|Oops:|kernel panic|general protection fault|KASAN|UBSAN:|soft lockup|hard LOCKUP|INFO: task .+ blocked|Bad page state|invalid opcode' /tmp/dmesg.log; then + echo "::error::Kernel issues detected in dmesg" + exit 1 + fi -- cgit v1.2.3