* [oracle/dtrace] 2a10b8: libdtrace: resolve BTF type tags when importing BT...
@ 2026-08-28 19:51 Kris Van Hees
0 siblings, 0 replies; only message in thread
From: Kris Van Hees @ 2026-08-28 19:51 UTC (permalink / raw)
To: dtrace
Branch: refs/heads/dev-queue
Home: https://github.com/oracle/dtrace
Commit: 2a10b8325f5d0c088ed895855fcef54148d0fe38
https://github.com/oracle/dtrace/commit/2a10b8325f5d0c088ed895855fcef54148d0fe38
Author: Jacob Carlborg <doob@me.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M libdtrace/dt_btf.c
Log Message:
-----------
libdtrace: resolve BTF type tags when importing BTF into CTF
Without this fix, running any DTrace commands results in:
```
dtrace: invalid probe specifier ::::
"/usr/lib64/dtrace/6.12.0/procfs.d", line 131: operator -> cannot be
applied to pointer to type "void"; must be applied to a struct or
union pointer
```
The issue occurs on kernels which have BTF with type tags. The fix is
to treat `BTF_KIND_TYPE_TAG` as a transparent modifier, resolving
straight to `type->type`.
Signed-off-by: Jacob Carlborg <doob@me.com>
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>
Commit: a4130f975ba04156acbf94a41e7891665191011e
https://github.com/oracle/dtrace/commit/a4130f975ba04156acbf94a41e7891665191011e
Author: Jacob Carlborg <doob@me.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M libdtrace/io.d.in
Log Message:
-----------
libdtrace: derive io provider dev_name from the device model
Without this fix, running any DTrace commands, like `dtrace -l`,
results in:
```
dtrace: invalid probe specifier :::: "/usr/lib64/dtrace/6.12.0/io.d",
line 134: failed to resolve vmlinux`major_names: Unknown symbol name
```
The issue is that on newer kernels the `major_names` symbols is not
available in `kallsyms` anymore. For example, running `grep -w
major_names /proc/kallsyms` on a newer kernel shows no results.
Running the same command on an older kernel gives the following
result:
```
$ grep -w major_names /proc/kallsyms
0000000000000000 b major_names
```
The fix is to stop depending on the `major_names` symbol and instead
derive `dev_name` from the device model (the driver name), mirroring
the `struct buffer_head` translator.
Signed-off-by: Jacob Carlborg <doob@me.com>
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>
Commit: 4c4f4eec9b3a0e5147a3beab07556870e1036714
https://github.com/oracle/dtrace/commit/4c4f4eec9b3a0e5147a3beab07556870e1036714
Author: Kris Van Hees <kris.van.hees@oracle.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M libdtrace/dt_impl.h
M libdtrace/dt_open.c
Log Message:
-----------
libdtrace: determine (and store) non-initial PID namespace dev/ino
If dtrace is executing in a non-initial PID namespace, record the dev/ino
pair to identify it. This can be used when performing pid/tgid lookups.
Suggested-by: Jacob Carlborg <doob@me.com>
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>
Commit: 3ccaaa2b58ddc9c278e1e7869cc4b9f0b511410b
https://github.com/oracle/dtrace/commit/3ccaaa2b58ddc9c278e1e7869cc4b9f0b511410b
Author: Kris Van Hees <kris.van.hees@oracle.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M libdtrace/dt_cg.c
M libdtrace/dt_cg.h
Log Message:
-----------
cg: provide function to retrieve pid and tgid in a PID ns agnostic way
The dt_cg_ns_pid_tgid() function automatically selects the correct BPF
helper to get the proper pid and tgid values relative to the current
PID namespace, and stores them in %r0 using the standard BPF convention:
(tgid << 32) | pid
Suggested-by: Jacob Carlborg <doob@me.com>
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>
Commit: 9361e7f00bb6f2a253800379c519ce16f5545eb4
https://github.com/oracle/dtrace/commit/9361e7f00bb6f2a253800379c519ce16f5545eb4
Author: Jacob Carlborg <doob@me.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M libdtrace/dt_prov_dtrace.c
Log Message:
-----------
libdtrace: match BEGIN/END PID in the tracer's own PID namespace
Without this fix, running any probe hangs with no output,
like `dtrace -n 'BEGIN { trace("hi"); exit(0); }'`.
The issues is that the `BEGIN/END` probes are implemented as uprobes
on DTrace's own `BEGIN_probe()/END_probe()` functions in `dt_work.c`.
`bpf_get_current_pid_tgid()` reports the TGID in the initial PID
namespace, which does not match `getpid()` when DTrace runs inside a
PID namespace. Using the `--pid=host` flag when running OrbStack does
not help, because it shares the daemon's namespace, not the kernel
init namespace. OrbStack's own supervisor runs in a nested PID
namespace. On bare metal `--pid=host` does reach the init namespaces
and the bug wouldn't appear.
This fix is when DTrace is in a non-initial PID namespace and the
kernel is at least 5.7, use `bpf_get_ns_current_pid_tgid` instead of
`bpf_get_current_pid_tgid`. `bpf_get_ns_current_pid_tgid` is
namespace aware.
Signed-off-by: Jacob Carlborg <doob@me.com>
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>
Commit: 1f5618797948616c6f45a9c003b5d70d702d1c73
https://github.com/oracle/dtrace/commit/1f5618797948616c6f45a9c003b5d70d702d1c73
Author: Kris Van Hees <kris.van.hees@oracle.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
A test/unittest/pidns/common.bash
A test/unittest/pidns/test.x
A test/unittest/pidns/tst.begin.sh
A test/unittest/pidns/tst.concurrent.sh
A test/unittest/pidns/tst.disasm-helper.sh
A test/unittest/pidns/tst.end.sh
A test/unittest/pidns/tst.io-dev-name.sh
A test/unittest/pidns/tst.io-dev-name.x
A test/unittest/pidns/tst.proc-create.sh
Log Message:
-----------
test: add PID namespace support tests
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>
Commit: 5a8f9f419d9e8cb89bc778b0ef68e4f5f8e54f4c
https://github.com/oracle/dtrace/commit/5a8f9f419d9e8cb89bc778b0ef68e4f5f8e54f4c
Author: Kris Van Hees <kris.van.hees@oracle.com>
Date: 2026-08-28 (Fri, 28 Aug 2026)
Changed paths:
M bpf/Build
A bpf/bvar_ns.c
M libdtrace/dt_bpf.c
M libdtrace/dt_cg.c
M libdtrace/dt_state.h
A test/unittest/pidns/tst.builtinvar-tid-pid.sh
Log Message:
-----------
bpf: make the PID ns dev/ino pair available to runtime BPF code
BPF code in generated probe programs needs to retrieve PID and TGID
values in a PID ns aware manner if drace is running in a non-initial
PID namespace.
Provide support for PID ns aware pid and tid built-in variable.
Suggested-by: Jacob Carlborg <doob@me.com>
Signed-off-by: Kris Van Hees <kris.van.hees@oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees@oracle.com>
Compare: https://github.com/oracle/dtrace/compare/61fea621160e...5a8f9f419d9e
To unsubscribe from these emails, change your notification settings at https://github.com/oracle/dtrace/settings/notifications
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-08-28 19:51 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-28 19:51 [oracle/dtrace] 2a10b8: libdtrace: resolve BTF type tags when importing BT Kris Van Hees
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox