From: Eduard Zingerman <eddyz87@gmail.com>
To: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Martin KaFai Lau <martin.lau@kernel.org>,
Emil Tsalapatis <emil@etsalapatis.com>,
Barret Rhoden <brho@google.com>,
kkd@meta.com, kernel-team@meta.com
Subject: Re: [RFC PATCH bpf-next/net v1 08/13] bpf: Add dump_stack() analogue to print to BPF stderr
Date: Tue, 22 Apr 2025 14:07:35 -0700 [thread overview]
Message-ID: <m2msc7rjl4.fsf@gmail.com> (raw)
In-Reply-To: <20250414161443.1146103-9-memxor@gmail.com> (Kumar Kartikeya Dwivedi's message of "Mon, 14 Apr 2025 09:14:38 -0700")
Kumar Kartikeya Dwivedi <memxor@gmail.com> writes:
> Introduce a kernel function which is the analogue of dump_stack()
> printing some useful information and the stack trace. This is not
> exposed to BPF programs yet, but can be made available in the future.
>
> When we have a PC for a BPF program in the stack trace, also
> additionally output the filename and line number to make the trace
> helpful. The rest of the trace can be passed into ./decode_stacktrace.sh
> to obtain the line numbers for kernel symbols.
>
> Signed-off-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
> ---
Seems to work as advertised.
Reviewed-by: Eduard Zingerman <eddyz87@gmail.com>
[...]
> +static int dump_stack_bpf_linfo(u64 ip, const char **filep)
> +{
> + struct bpf_prog *prog = bpf_prog_ksym_find(ip);
> + int idx = -1, insn_start, insn_end, len;
> + struct bpf_line_info *linfo;
> + void **jited_linfo;
> + struct btf *btf;
> +
> + btf = prog->aux->btf;
> + linfo = prog->aux->linfo;
> + jited_linfo = prog->aux->jited_linfo;
> +
> + if (!btf || !linfo || !prog->aux->jited_linfo)
> + return -1;
> + len = prog->aux->func ? prog->aux->func[prog->aux->func_idx]->len : prog->len;
> +
> + linfo = &prog->aux->linfo[prog->aux->linfo_idx];
> + jited_linfo = &prog->aux->jited_linfo[prog->aux->linfo_idx];
> +
> + insn_start = linfo[0].insn_off;
> + insn_end = insn_start + len;
> +
> + for (int i = 0; linfo[i].insn_off >= insn_start && linfo[i].insn_off < insn_end; i++) {
> + if (jited_linfo[i] >= (void *)ip)
> + break;
> + idx = i;
> + }
> +
> + if (idx == -1)
> + return -1;
> +
> + *filep = btf_name_by_offset(btf, linfo[idx].file_name_off);
> + *filep = strrchr(*filep, '/') ?: *filep;
> + *filep += 1;
Nit: `+= 1` not needed if '/' was not found?
> +
> + return BPF_LINE_INFO_LINE_NUM(linfo[idx].line_col);
> +}
[...]
next prev parent reply other threads:[~2025-04-22 21:07 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-14 16:14 [RFC PATCH bpf-next/net v1 00/13] BPF Standard Streams Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 01/13] bpf: Tie dynptrs to referenced source objects Kumar Kartikeya Dwivedi
2025-04-14 19:58 ` Amery Hung
2025-04-17 19:53 ` Kumar Kartikeya Dwivedi
2025-04-16 5:52 ` Eduard Zingerman
2025-04-17 19:52 ` Kumar Kartikeya Dwivedi
2025-04-16 21:04 ` Andrii Nakryiko
2025-04-17 19:51 ` Kumar Kartikeya Dwivedi
2025-04-22 21:09 ` Andrii Nakryiko
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 02/13] bpf: Compare dynptr_id in regsafe Kumar Kartikeya Dwivedi
2025-04-16 7:58 ` Eduard Zingerman
2025-04-16 21:04 ` Andrii Nakryiko
2025-04-17 19:54 ` Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 03/13] selftests/bpf: Convert dynptr_fail to use vmlinux.h Kumar Kartikeya Dwivedi
2025-04-16 8:41 ` Eduard Zingerman
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 04/13] selftests/bpf: Add tests for dynptr source object interaction Kumar Kartikeya Dwivedi
2025-04-16 8:40 ` Eduard Zingerman
2025-04-17 20:09 ` Kumar Kartikeya Dwivedi
2025-04-17 20:44 ` Eduard Zingerman
2025-04-17 21:10 ` Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 05/13] locking/local_lock, mm: Replace localtry_ helpers with local_trylock_t type Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 06/13] bpf: Introduce bpf_dynptr_from_mem_slice Kumar Kartikeya Dwivedi
2025-04-16 17:36 ` Eduard Zingerman
2025-04-17 20:07 ` Kumar Kartikeya Dwivedi
2025-04-16 21:04 ` Andrii Nakryiko
2025-04-17 20:07 ` Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 07/13] bpf: Introduce per-prog stdout/stderr streams Kumar Kartikeya Dwivedi
2025-04-16 21:49 ` Eduard Zingerman
2025-04-17 20:06 ` Kumar Kartikeya Dwivedi
2025-04-22 1:42 ` Alexei Starovoitov
2025-04-22 2:30 ` Kumar Kartikeya Dwivedi
2025-04-22 17:44 ` Alexei Starovoitov
2025-04-22 22:09 ` Eduard Zingerman
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 08/13] bpf: Add dump_stack() analogue to print to BPF stderr Kumar Kartikeya Dwivedi
2025-04-22 21:07 ` Eduard Zingerman [this message]
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 09/13] bpf: Report may_goto timeout " Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 10/13] bpf: Report rqspinlock deadlocks/timeout " Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 11/13] bpf: Report arena faults " Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 12/13] bpftool: Add support for dumping streams Kumar Kartikeya Dwivedi
2025-04-22 20:30 ` Eduard Zingerman
2025-04-22 22:10 ` Quentin Monnet
2025-05-07 17:13 ` Kumar Kartikeya Dwivedi
2025-04-14 16:14 ` [RFC PATCH bpf-next/net v1 13/13] selftests/bpf: Add tests for prog streams Kumar Kartikeya Dwivedi
2025-04-22 19:12 ` Eduard Zingerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m2msc7rjl4.fsf@gmail.com \
--to=eddyz87@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=brho@google.com \
--cc=daniel@iogearbox.net \
--cc=emil@etsalapatis.com \
--cc=kernel-team@meta.com \
--cc=kkd@meta.com \
--cc=martin.lau@kernel.org \
--cc=memxor@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).