6e00d86b09
Save the last callout function pointer (and its argument) executed on each CPU for inspection by a debugger. Add a ddb `show callout_last` command to show these pointers. Add a kernel module that I used for testing that command. Relocate `ce_migration_cpu` to reduce padding and therefore preserve the size of `struct callout_cpu` (320 bytes on amd64) despite the added members. This should help diagnose reference-after-free bugs where the callout's mutex has already been freed when `softclock_call_cc` tries to unlock it. You might hope that the pointer would still be available, but it isn't. The argument to that function is on the stack (because `softclock_call_cc` uses it later), and that might be enough in some cases, but even then, it's very laborious. A pointer to the callout is saved right before these newly added fields, but that callout might have been freed. We still have the pointer to its associated mutex, and the name within might be enough, but it might also have been freed. Reviewed by: markj jhb MFC after: 2 weeks Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D20794 |
||
---|---|---|
.. | ||
auxinfo | ||
callout_free | ||
devrandom | ||
hwpmc | ||
iconv | ||
malloc | ||
net | ||
netfibs | ||
popss | ||
ppsapi | ||
pthread_vfork | ||
ptrace | ||
sort | ||
testfloat | ||
upsdl | ||
vm86 | ||
README |
$FreeBSD$ This directory is for standalone test programs. For the FreeBSD Test Suite, which uses Kyua, please see /usr/src/tests/ A test program is one that exercises a particular bit of the system and either tries to break it or measures its performance. Please make a subdir per program, and add a brief description to this file. auxinfo Return information on page sizes, CPUs, and OS release date. devrandom Programs to test /dev/*random. hwpmc Automatically trigger every event in hwpmc(4). iconv Character set conversion tests. malloc A program to test and benchmark malloc(). net A set of generic test programs for networking. netfibs Programs to test multi-FIB network stacks. posixshm A program to test POSIX shared memory. ppsapi Test 1 Pulse Per Second (1PPS) input for time control. pthread_vfork Check that vfork and pthreads work together. ptrace Verify that ptrace works with syscalls, vfork etc. sort Tests for the sort command, including a full regression. testfloat Programs to test floating-point implementations upsdl Test of mmap functionality.