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

None: UprobesTestScenarios (last edited 2008-01-10 19:47:35 by localhost)