On Mon, Jun 24, 2024 at 6:14 PM Masami Hiramatsu <mhiramat@xxxxxxxxxx> wrote: > > On Tue, 21 May 2024 18:38:45 -0700 > Andrii Nakryiko <andrii@xxxxxxxxxx> wrote: > > > Add a set of tests to validate that stack traces captured from or in the > > presence of active uprobes and uretprobes are valid and complete. > > > > For this we use BPF program that are installed either on entry or exit > > of user function, plus deep-nested USDT. One of target funtions > > (target_1) is recursive to generate two different entries in the stack > > trace for the same uprobe/uretprobe, testing potential edge conditions. > > > > Without fixes in this patch set, we get something like this for one of > > the scenarios: > > > > caller: 0x758fff - 0x7595ab > > target_1: 0x758fd5 - 0x758fff > > target_2: 0x758fca - 0x758fd5 > > target_3: 0x758fbf - 0x758fca > > target_4: 0x758fb3 - 0x758fbf > > ENTRY #0: 0x758fb3 (in target_4) > > ENTRY #1: 0x758fd3 (in target_2) > > ENTRY #2: 0x758ffd (in target_1) > > ENTRY #3: 0x7fffffffe000 > > ENTRY #4: 0x7fffffffe000 > > ENTRY #5: 0x6f8f39 > > ENTRY #6: 0x6fa6f0 > > ENTRY #7: 0x7f403f229590 > > > > Entry #3 and #4 (0x7fffffffe000) are uretprobe trampoline addresses > > which obscure actual target_1 and another target_1 invocations. Also > > note that between entry #0 and entry #1 we are missing an entry for > > target_3, which is fixed in patch #2. > > Please avoid using `patch #2` because after commit, this means nothing. Yep, makes sense, sorry about that, will keep descriptions a bit more general going forward. > > Thank you, > > > > > With all the fixes, we get desired full stack traces: > > > > caller: 0x758fff - 0x7595ab > > target_1: 0x758fd5 - 0x758fff > > target_2: 0x758fca - 0x758fd5 > > target_3: 0x758fbf - 0x758fca > > target_4: 0x758fb3 - 0x758fbf > > ENTRY #0: 0x758fb7 (in target_4) > > ENTRY #1: 0x758fc8 (in target_3) > > ENTRY #2: 0x758fd3 (in target_2) > > ENTRY #3: 0x758ffd (in target_1) > > ENTRY #4: 0x758ff3 (in target_1) > > ENTRY #5: 0x75922c (in caller) > > ENTRY #6: 0x6f8f39 > > ENTRY #7: 0x6fa6f0 > > ENTRY #8: 0x7f986adc4cd0 > > > > Now there is a logical and complete sequence of function calls. > > > > Signed-off-by: Andrii Nakryiko <andrii@xxxxxxxxxx> > > --- > > .../bpf/prog_tests/uretprobe_stack.c | 186 ++++++++++++++++++ > > .../selftests/bpf/progs/uretprobe_stack.c | 96 +++++++++ > > 2 files changed, 282 insertions(+) > > create mode 100644 tools/testing/selftests/bpf/prog_tests/uretprobe_stack.c > > create mode 100644 tools/testing/selftests/bpf/progs/uretprobe_stack.c > > [...]