selftest/bpf: Make crashes more debuggable in test_progs
Reset stdio before printing verbose log of the SIGSEGV'ed test. Otherwise, it's hard to understand what's going on in the cases like [0]. With the following patch applied: --- a/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c +++ b/tools/testing/selftests/bpf/prog_tests/xdp_metadata.c @@ -392,6 +392,11 @@ void test_xdp_metadata(void) "generate freplace packet")) goto out; + + ASSERT_EQ(1, 2, "oops"); + int *x = 0; + *x = 1; /* die */ + while (!retries--) { if (bpf_obj2->bss->called) break; Before: #281 xdp_metadata:FAIL Caught signal #11! Stack trace: ./test_progs(crash_handler+0x1f)[0x55c919d98bcf] /lib/x86_64-linux-gnu/libc.so.6(+0x3bf90)[0x7f36aea5df90] ./test_progs(test_xdp_metadata+0x1db0)[0x55c919d8c6d0] ./test_progs(+0x23b438)[0x55c919d9a438] ./test_progs(main+0x534)[0x55c919d99454] /lib/x86_64-linux-gnu/libc.so.6(+0x2718a)[0x7f36aea4918a] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85)[0x7f36aea49245] ./test_progs(_start+0x21)[0x55c919b82ef1] After: test_xdp_metadata:PASS:ip netns add xdp_metadata 0 nsec open_netns:PASS:malloc token 0 nsec open_netns:PASS:open /proc/self/ns/net 0 nsec open_netns:PASS:open netns fd 0 nsec open_netns:PASS:setns 0 nsec .. test_xdp_metadata:FAIL:oops unexpected oops: actual 1 != expected 2 #281 xdp_metadata:FAIL Caught signal #11! Stack trace: ./test_progs(crash_handler+0x1f)[0x562714a76bcf] /lib/x86_64-linux-gnu/libc.so.6(+0x3bf90)[0x7fa663f9cf90] ./test_progs(test_xdp_metadata+0x1db0)[0x562714a6a6d0] ./test_progs(+0x23b438)[0x562714a78438] ./test_progs(main+0x534)[0x562714a77454] /lib/x86_64-linux-gnu/libc.so.6(+0x2718a)[0x7fa663f8818a] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0x85)[0x7fa663f88245] ./test_progs(_start+0x21)[0x562714860ef1] 0: https://github.com/kernel-patches/bpf/actions/runs/4019879316/jobs/6907358876 Signed-off-by: Stanislav Fomichev <sdf@google.com> Link: https://lore.kernel.org/r/20230127215705.1254316-1-sdf@google.com Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org>
This commit is contained in:
Родитель
e4ce876f10
Коммит
16809afdcb
|
@ -975,12 +975,12 @@ void crash_handler(int signum)
|
||||||
|
|
||||||
sz = backtrace(bt, ARRAY_SIZE(bt));
|
sz = backtrace(bt, ARRAY_SIZE(bt));
|
||||||
|
|
||||||
|
if (env.stdout)
|
||||||
|
stdio_restore();
|
||||||
if (env.test) {
|
if (env.test) {
|
||||||
env.test_state->error_cnt++;
|
env.test_state->error_cnt++;
|
||||||
dump_test_log(env.test, env.test_state, true, false);
|
dump_test_log(env.test, env.test_state, true, false);
|
||||||
}
|
}
|
||||||
if (env.stdout)
|
|
||||||
stdio_restore();
|
|
||||||
if (env.worker_id != -1)
|
if (env.worker_id != -1)
|
||||||
fprintf(stderr, "[%d]: ", env.worker_id);
|
fprintf(stderr, "[%d]: ", env.worker_id);
|
||||||
fprintf(stderr, "Caught signal #%d!\nStack trace:\n", signum);
|
fprintf(stderr, "Caught signal #%d!\nStack trace:\n", signum);
|
||||||
|
|
Загрузка…
Ссылка в новой задаче