2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-26 06:04:14 +08:00
linux-next/tools/testing/selftests
Andrii Nakryiko 9fb156bb82 selftests/bpf: Print backtrace on SIGSEGV in test_progs
Due to various bugs in tests clean up code (usually), if host system is
misconfigured, it happens that test_progs will just crash in the middle of
running a test with little to no indication of where and why the crash
happened. For cases where coredump is not readily available (e.g., inside
a CI), it's very helpful to have a stack trace, which lead to crash, to be
printed out. This change adds a signal handler that will capture and print out
symbolized backtrace:

  $ sudo ./test_progs -t mmap
  test_mmap:PASS:skel_open_and_load 0 nsec
  test_mmap:PASS:bss_mmap 0 nsec
  test_mmap:PASS:data_mmap 0 nsec
  Caught signal #11!
  Stack trace:
  ./test_progs(crash_handler+0x18)[0x42a888]
  /lib64/libpthread.so.0(+0xf5d0)[0x7f2aab5175d0]
  ./test_progs(test_mmap+0x3c0)[0x41f0a0]
  ./test_progs(main+0x160)[0x407d10]
  /lib64/libc.so.6(__libc_start_main+0xf5)[0x7f2aab15d3d5]
  ./test_progs[0x407ebc]
  [1]    1988412 segmentation fault (core dumped)  sudo ./test_progs -t mmap

Unfortunately, glibc's symbolization support is unable to symbolize static
functions, only global ones will be present in stack trace. But it's still a
step forward without adding extra libraries to get a better symbolization.

Signed-off-by: Andrii Nakryiko <andriin@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Song Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/bpf/20200225000847.3965188-1-andriin@fb.com
2020-02-25 22:43:02 +01:00
..
android
arm64 kselftest: arm64: fix spelling mistake "contiguos" -> "contiguous" 2019-11-11 18:25:24 +00:00
bpf selftests/bpf: Print backtrace on SIGSEGV in test_progs 2020-02-25 22:43:02 +01:00
breakpoints selftests: breakpoints: Fix a typo of function name 2019-11-07 14:27:26 -07:00
capabilities
cgroup selftests: Uninitialized variable in test_cgcore_proc_migration() 2020-01-09 16:21:23 -07:00
clone3 selftests/clone3: skip if clone3() is ENOSYS 2019-11-18 08:59:03 +01:00
cpu-hotplug
cpufreq
dmabuf-heaps dma-buf: heaps: Use _IOCTL_ for userspace IOCTL identifier 2019-12-17 21:37:40 +05:30
drivers selftests: mlxsw: vxlan: Add test for error path 2020-02-17 14:42:53 -08:00
efivarfs
exec
filesystems selftests: filesystems/epoll: fix build error 2019-12-23 10:52:40 -07:00
firmware selftests: firmware: Fix it to do root uid check and skip 2019-12-23 10:52:40 -07:00
ftrace selftests/ftrace: Have pid filter test use instance flag 2020-02-10 17:59:44 -07:00
futex selftests: use LDLIBS for libraries instead of LDFLAGS 2020-02-13 13:14:34 -07:00
gpio treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ia64 treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
intel_pstate
ipc
ir media: selftests: ir: fix ir_loopback test failure 2019-08-14 05:06:25 -03:00
kcmp
kexec sefltest/ima: support appended signatures (modsig) 2019-08-29 12:45:30 -04:00
kmod selftests: kmod: Fix typo in kmod.sh 2019-07-23 10:45:06 -06:00
kselftest selftests: settings: tests can be in subsubdirs 2020-01-27 10:49:52 -07:00
kvm selftests: KVM: Remove unused x86_register enum 2020-02-12 20:09:45 +01:00
lib selftests: Move kselftest_module.sh into kselftest/ 2019-11-07 14:46:08 -07:00
livepatch selftests/livepatch: Remove unused local variable in set_ftrace_enabled() 2020-01-16 13:05:49 -07:00
lkdtm selftests/lkdtm: Add tests for LKDTM targets 2020-01-10 14:50:28 -07:00
locking
media_tests
membarrier selftests, sched/membarrier: Add multi-threaded test 2019-09-25 17:42:31 +02:00
memfd memfd: add test for COW on MAP_PRIVATE and F_SEAL_FUTURE_WRITE mappings 2019-12-01 12:59:03 -08:00
memory-hotplug
mount
mqueue
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/netdev/net 2020-02-21 11:59:51 -08:00
netfilter selftests: netfilter: Introduce tests for sets with range concatenation 2020-01-27 08:54:30 +01:00
networking/timestamping selftests: timestamping: Fix SIOCGSTAMP undeclared build failure 2019-06-28 14:31:12 -06:00
nsfs
ntb New feature to add support for NTB virtual MSI interrupts, the ability 2019-07-21 09:46:59 -07:00
openat2 selftests: openat2: fix build error on newer glibc 2020-02-13 13:15:45 -07:00
pidfd test: Add test for pidfd getfd 2020-01-13 21:49:54 +01:00
powerpc selftests/eeh: Bump EEH wait time to 60s 2020-01-26 00:11:37 +11:00
prctl
proc selftests: proc: Make va_max 1MB 2019-11-07 14:52:57 -07:00
pstore treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 472 2019-06-19 17:09:11 +02:00
ptp ptp: Extend the test program to check the external time stamp flags. 2019-11-15 12:48:33 -08:00
ptrace selftests/ptrace: add a test case for PTRACE_GET_SYSCALL_INFO 2019-07-16 19:23:24 -07:00
rcutorture torture: Hoist calls to lscpu to higher-level kvm.sh script 2019-12-09 13:00:30 -08:00
rseq rseq/selftests: Clarify rseq_prepare_unload() helper requirements 2019-12-23 10:52:41 -07:00
rtc selftests: use LDLIBS for libraries instead of LDFLAGS 2020-02-13 13:14:34 -07:00
safesetid selftests: safesetid: Fix Makefile to set correct test program 2019-12-09 10:53:04 -07:00
seccomp selftests/seccomp: Catch garbage on SECCOMP_IOCTL_NOTIF_RECV 2020-01-02 13:15:45 -08:00
sigaltstack
size kselftest: Minimise dependency of get_size on C library interfaces 2020-01-16 13:08:26 -07:00
sparc64
splice
static_keys
sync selftests: sync: Fix cast warnings on arm 2019-11-07 14:54:37 -07:00
sysctl
tc-testing tc-testing: updated tdc tests for basic filter with u16 extended match rules 2020-02-21 08:17:21 -08:00
timens selftests: use LDLIBS for libraries instead of LDFLAGS 2020-02-13 13:14:34 -07:00
timers kselftests: timers: freq-step: Update maximum acceptable precision and errors 2019-06-22 11:28:53 +02:00
tmpfs
tpm2 Kernel selftests: tpm2: check for tpm support 2020-02-10 18:00:40 -07:00
uevent
user
vDSO
vm selftests/vm: add missed tests in run_vmtests 2020-02-21 11:22:15 -08:00
watchdog selftests: watchdog: Add command line option to show watchdog_info 2019-10-02 13:44:43 -06:00
wireguard wireguard: selftests: reduce complexity and fix make races 2020-02-16 19:21:56 -08:00
x86 selftests/x86/single_step_syscall: Check SYSENTER directly 2019-11-26 21:53:34 +01:00
zram docs: blockdev: add it to the admin-guide 2019-07-15 11:03:01 -03:00
.gitignore selftests/tpm2: Add log and *.pyc to .gitignore 2019-09-25 02:43:51 +03:00
gen_kselftest_tar.sh selftests: gen_kselftest_tar.sh: Do not clobber kselftest/ 2019-11-07 14:43:27 -07:00
kselftest_harness.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 481 2019-06-19 17:09:51 +02:00
kselftest_install.sh selftests: gen_kselftest_tar.sh: Do not clobber kselftest/ 2019-11-07 14:43:27 -07:00
kselftest_module.h
kselftest.h kselftest: save-and-restore errno to allow for %m formatting 2019-07-30 15:46:48 -06:00
lib.mk selftests: fix too long argument 2020-02-10 18:01:55 -07:00
Makefile selftests: allow detection of build failures 2020-02-10 18:01:25 -07:00