From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
Steven Rostedt <rostedt@kernel.org>,
linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
bpf@vger.kernel.org, x86@kernel.org,
Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
Josh Poimboeuf <jpoimboe@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@kernel.org>, Jiri Olsa <jolsa@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Thomas Gleixner <tglx@linutronix.de>,
Andrii Nakryiko <andrii@kernel.org>,
Indu Bhagat <indu.bhagat@oracle.com>,
"Jose E. Marchesi" <jemarch@gnu.org>,
Beau Belgrave <beaub@linux.microsoft.com>,
Jens Remus <jremus@linux.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
Florian Weimer <fweimer@redhat.com>, Sam James <sam@gentoo.org>,
Kees Cook <kees@kernel.org>,
Carlos O'Donell <codonell@redhat.com>
Subject: Re: [PATCH v6 5/6] tracing: Show inode and device major:minor in deferred user space stacktrace
Date: Thu, 28 Aug 2025 17:04:38 -0300 [thread overview]
Message-ID: <aLC2Vs06UifGU2HZ@x1> (raw)
In-Reply-To: <CAHk-=wiBUdyV9UdNYEeEP-1Nx3VUHxUb0FQUYSfxN1LZTuGVyg@mail.gmail.com>
On Thu, Aug 28, 2025 at 12:18:39PM -0700, Linus Torvalds wrote:
> On Thu, 28 Aug 2025 at 11:58, Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com> wrote:
> > >Give the damn thing an actual filename or something *useful*, not a
> > >number that user space can't even necessarily match up to anything.
> > A build ID?
> I think that's a better thing than the disgusting inode number, yes.
> That said, I think they are problematic too, in that I don't think
> they are universally available, so if you want to trace some
> executable without build ids - and there are good reasons to do that -
> you might hate being limited that way.
Right, but these days gdb (and other traditional tools) supports it and
downloads it (perf should do it with a one-time sticky question too,
does it already in some cases, unconditionally, that should be fixed as
well), most distros have it:
⬢ [acme@toolbx perf-tools-next]$ file /bin/bash
/bin/bash: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=707a1c670cd72f8e55ffedfbe94ea98901b7ce3a, for GNU/Linux 3.2.0, stripped
⬢ [acme@toolbx perf-tools-next]$
We have debuginfod-servers that brings ELF images with debug keyed by
that build id and finally build-ids come together with pathnames, so if
one is null, fallback to the other.
Default in fedora:
⬢ [acme@toolbx perf-tools-next]$ echo $DEBUGINFOD_
$DEBUGINFOD_IMA_CERT_PATH $DEBUGINFOD_URLS
⬢ [acme@toolbx perf-tools-next]$ echo $DEBUGINFOD_
$DEBUGINFOD_IMA_CERT_PATH $DEBUGINFOD_URLS
⬢ [acme@toolbx perf-tools-next]$ echo $DEBUGINFOD_IMA_CERT_PATH
/etc/keys/ima:
⬢ [acme@toolbx perf-tools-next]$ echo $DEBUGINFOD_URLS
https://debuginfod.fedoraproject.org/
⬢ [acme@toolbx perf-tools-next]$
I wasn't aware of that IMA stuff.
So even without the mandate and with sometimes not being able to get
that build-id, most of the time they are there and deterministically
allows tooling to fetch it in most cases, I guess that is as far as we
can pragmatically get.
- Arnaldo
> So I think you'd be much better off with just actual pathnames.
>
> Are there no trace events for "mmap this path"? Create a good u64 hash
> from the contents of a 'struct path' (which is just two pointers: the
> dentry and the mnt) when mmap'ing the file, and then you can just
> associate the stack trace entry with that hash.
>
> That should be simple and straightforward, and hashing two pointers
> should be simple and straightforward.
>
> And then matching that hash against the mmap event where the actual
> path was saved off gives you an actual *pathname*. Which is *so* much
> better than those horrific inode numbers.
>
> And yes, yes, obviously filenames can go away and aren't some kind of
> long-term stable thing. But inode numbers can be re-used too, so
> that's no different.
>
> With the "create a hash of 'struct path' contents" you basically have
> an ID that can be associated with whatever the file name was at the
> time it was mmap'ed into the thing you are tracing, which is I think
> what you really want anyway.
>
> Now, what would be even simpler is to not create a hash at all, but
> simply just create the whole pathname when the stack trace entry is
> created. But it would probably waste too much space, since you'd
> probably want to have at least 32 bytes (as opposed to just 64 bits)
> for a (truncated) pathname.
>
> And it would be more expensive than just hashing the dentry/mnt
> pointers, although '%pD' isn't actually *that* expensive. But probably
> expensive enough to not really be acceptable. I'm just throwing it out
> as a stupid idea that at least generates much more usable output than
> the inode numbers do.
>
> Linus
next prev parent reply other threads:[~2025-08-28 20:04 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-28 18:03 [PATCH v6 0/6] tracing: Deferred unwinding of user space stack traces Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 1/6] tracing: Do not bother getting user space stacktraces for kernel threads Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 2/6] tracing: Rename __dynamic_array() to __dynamic_field() for ftrace events Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 3/6] tracing: Implement deferred user space stacktracing Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 4/6] tracing: Have deferred user space stacktrace show file offsets Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 5/6] tracing: Show inode and device major:minor in deferred user space stacktrace Steven Rostedt
2025-08-28 18:39 ` Linus Torvalds
2025-08-28 18:58 ` Arnaldo Carvalho de Melo
2025-08-28 19:02 ` Mathieu Desnoyers
2025-08-28 19:18 ` Linus Torvalds
2025-08-28 20:04 ` Arnaldo Carvalho de Melo [this message]
2025-08-28 20:37 ` Linus Torvalds
2025-08-28 20:17 ` Steven Rostedt
2025-08-28 20:27 ` Arnaldo Carvalho de Melo
2025-08-28 20:42 ` Linus Torvalds
2025-08-28 20:51 ` Steven Rostedt
2025-08-28 21:00 ` Arnaldo Carvalho de Melo
2025-08-28 21:27 ` Steven Rostedt
2025-08-29 16:27 ` Sam James
2025-08-28 20:38 ` Linus Torvalds
2025-08-28 20:48 ` Steven Rostedt
2025-08-28 21:06 ` Linus Torvalds
2025-08-28 21:17 ` Steven Rostedt
2025-08-28 22:10 ` Linus Torvalds
2025-08-28 22:44 ` Steven Rostedt
2025-08-29 15:06 ` Steven Rostedt
2025-08-29 15:47 ` Linus Torvalds
2025-08-29 16:07 ` Linus Torvalds
2025-08-29 16:33 ` Steven Rostedt
2025-08-29 16:42 ` Linus Torvalds
2025-08-29 16:50 ` Linus Torvalds
2025-08-29 17:02 ` Steven Rostedt
2025-08-29 17:13 ` Linus Torvalds
2025-08-29 17:57 ` Arnaldo Carvalho de Melo
2025-08-29 20:51 ` Linus Torvalds
2025-08-29 16:57 ` Steven Rostedt
2025-08-29 17:02 ` Linus Torvalds
2025-08-29 17:52 ` Steven Rostedt
2025-08-29 16:19 ` Steven Rostedt
2025-08-29 16:28 ` Linus Torvalds
2025-08-29 16:49 ` Steven Rostedt
2025-08-29 16:59 ` Linus Torvalds
2025-08-29 17:17 ` Arnaldo Carvalho de Melo
2025-08-29 17:33 ` Linus Torvalds
2025-08-29 18:11 ` Steven Rostedt
2025-08-29 20:54 ` Linus Torvalds
2025-08-29 21:18 ` Steven Rostedt
2025-08-29 22:40 ` Linus Torvalds
2025-08-29 23:09 ` Steven Rostedt
2025-08-29 23:42 ` Steven Rostedt
2025-08-30 0:36 ` Steven Rostedt
2025-08-30 0:44 ` Steven Rostedt
2025-08-30 0:45 ` Linus Torvalds
2025-08-30 1:20 ` Steven Rostedt
2025-08-30 1:26 ` Steven Rostedt
2025-08-30 18:31 ` Steven Rostedt
2025-08-30 19:03 ` Arnaldo Carvalho de Melo
2025-08-30 19:03 ` Linus Torvalds
2025-09-08 21:42 ` Steven Rostedt
2025-09-08 23:09 ` Linus Torvalds
2025-09-08 23:26 ` Linus Torvalds
2025-09-09 1:18 ` Steven Rostedt
2025-08-28 18:03 ` [PATCH v6 6/6] tracing: Add an event to map the inodes to their file names Steven Rostedt
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=aLC2Vs06UifGU2HZ@x1 \
--to=acme@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=andrii@kernel.org \
--cc=arnaldo.melo@gmail.com \
--cc=beaub@linux.microsoft.com \
--cc=bpf@vger.kernel.org \
--cc=codonell@redhat.com \
--cc=fweimer@redhat.com \
--cc=indu.bhagat@oracle.com \
--cc=jemarch@gnu.org \
--cc=jolsa@kernel.org \
--cc=jpoimboe@kernel.org \
--cc=jremus@linux.ibm.com \
--cc=kees@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=rostedt@kernel.org \
--cc=sam@gentoo.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=x86@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.