Section A: Uprobes unit tests |
||
1 |
Register/unregister multiple disjoint probe points each using a different handler. |
NYI |
2 |
Register/unregister multiple disjoint probe points each using a same handler |
probe6.c, rprobe6.c, kdie.c, kunreg.c etc (all modules) |
3 |
Register/unregister the same probepoint (colocated) multiple times with all probes using same handler. |
probe5ag.c module |
4 |
Register/unregister the same probepoint multiple times with each probe using a different handler. |
NYI |
5 |
Register (through a probe handler) multiple colocated probepoints with same handler. |
Currently this feature under holld (prototype available) |
6 |
Self register (through a handler) multiple colocated probepoints with different handlers. |
Currently this feature under hold |
7 |
Register multiple disjoint probe points from a handler. |
Currently this feature under hold |
8 |
Unregister probe from its own handler. |
Currently this feature under hold (prototype available) |
9 |
Unregistering a different probe from a handler. |
Currently this feature under hold (prototype available) |
10 |
Register/Unregister probes in a chain of functions calling one another |
Implemented using probe6.c and rprobe6 modules + probeme6.c |
11 |
Register/Unregister one or more probe points on functions defined in shared libraries. |
NYI in the testsuite : prototype available. |
12 |
Register/unregister a/multiple probe(s) on a function(s) to be called by several threads of a multithreaded process but before the threads are created. |
Implemented as probe5.c module + probe7-thread.c |
13 |
Register/unregister a/multiple probe(s) on a function(s) to be called by several threads of a multithreaded process but after the threads are created. |
NYI |
14 |
Register/unregister one or more probe points on functions defined in shared libraries called by several threads of a multithreaded process. |
NYI |
15 |
Registers callbacks for these events via utrace, with the callbacks registering/unregistering uprobes. |
NYI |
16 |
Test module probes multiple processes. Probes are [un]registered by the module init function and/or handlers. |
NYI |
17 |
Register once and trying to unregister multiple times. |
NYI |
18 |
Registering / unregistering a invalid probe point. |
NYI |
19 |
Registering an already existing probe should return an error. |
NYI |
Section B: stress tests |
||
1 |
In a loop : one thread registers while the other thread is unregisters at the same probe point. |
NYI |
2 |
In a loop : one thread registers multiple points while the other thread unregisters only a subset. |
NYI |
3 |
Register probepoints greater than PAGE_SIZE/instruction slots (specific to SSOL) and making sure that each probepoint is hit. |
NYI |
4 |
Register/unregister probes on recursive function calls. B5. Register/Unregister huge number of probe points in a single threaded process (500/1000 probe points) including some probes in shared libraries. |
NYI |
5 |
Register/Unregister huge number of probe points in a multi-threaded process (500/1000 probe points) including some probes in shared libraries. |
NYI |
6 |
Register/Unregister probes on functions involved in tail-end recursion |
NYI |
7 |
Register many thousands of probes - on every instruction of a chosen text segment |
NYI |
8 |
Run many copies of the test suite concurrently (some staggered) |
NYI |
Section C: other scenarios |
||
1 |
probe handler calls exit in a single threaded process. |
Implemented as suicide.c (module) on probeme6.c |
2 |
probe handler calls exit in a multithreaded process. |
Implemented as ksuicide.c (module). |
3 |
probe handler requests process dump. |
NYI |
4 |
probe handler requests stack trace. |
NYI |
5 |
register a probe in a common function called by parent and child process but before invoking fork(). Expected result: child process doesn't take the probe parent process invokes the corresponding probe handler. |
Implemented as kfork_thread.c (module) and fork_thread.c; probe5.c(module) and probe8-fork.c |
6 |
register a probe in a function before the process execs itself. Expected result: probe handler is not invoked. |
Implemented as kexec.c (module) and texec.c |
7 |
register a uprobe on a registered atexit handler. Expected result: probe handler invoked when a process exits should be called only once. |
NYI |
8 |
different threads of a multithreaded process call different probed functions, and the handler of a probed function calls exit. Expected result: the process should exit when the handlers gets run. |
Implemented as ksuicide.c (module). |
9 |
register a uprobe on a signal handler. Expected result : probe handler invoked when signaled. |
NYI |
10 |
Different threads of a multithreaded process call different probed functions, and the handler of a probed function makes an illegal access or executes code resulting in Segmentation fault. Expected result: the process should exit when the handlers gets run. |
Implemented as ksuicide2.c (module). |
11 |
Different threads of a multithreaded process call different probed functions, and the handler of a probed function raises a signal (either explicit signal raising or make illegal access.) and the process has made arrangements to catch the signal. |
NYI |
12 |
Probe pthread_atfork handler with a probe handler invoking exit. |
NYI |
13 |
Probe pthread_create function with a probe handler invoking exit |
NYI |
14 |
Probe pthread_exit function with a probe handler invoking exit/thread_exit. |
NYI |
15 |
Register a probe in a function on a process that is already traced using ptrace where uprobe is at a different address from the breakpoint established by ptrace. |
NYI |
16 |
Register probes in a function on a process that is subjected to ltrace where ltrace and uprobes aren't trying to probe the same code points. |
NYI |
17 |
Register a probe on a probe point in a process that is being debugged by GDB and on which a break-point is installed where uprobe is at a different address from the breakpoint established by GDB. |
NYI |
18 |
Probe functions on different instructions like mov, jmp, bl, clc. |
NYI |
19 |
Register/unregister probes on consecutive instructions in a function. |
NYI |
20 |
Register/unregister probes on instructions instructions split across two pages. |
NYI |
21 |
Register/unregister probes on instructions that result in illegal access/ segment ation faults/ floating point exceptions. |
NYI |
22 |
Register probes on not-first bytes of instructions. Expect app process to crash, kernel to continue |
NYI |
Section D: uretprobes |
||
1 |
uretprobe handler calls exit in a multithreaded proces |
NYI |
2 |
uretprobe handler calls exit in a single threaded process |
NYI |
3 |
register a uretprobe handler on a registered atexit handler. expected result: uretprobe handler should be invoked on process exit |
NYI |
4 |
register a uretprobe handler on a signal handler. Expected result: uretprobe handler should be invoked when signaled |
NYI |
5 |
Register a uretprobe on a function calling exit/exec/fork.Expected result: for exit/exec : handler shouldn't get called.Expected result: for fork : the handler should be called just once for every function ca |
NIY |