Skip to content

Releases: kxxt/tracexec

v0.8.0

27 Oct 13:51
v0.8.0
Compare
Choose a tag to compare

Breaking Changes

The ptrace backend no longer supports kernels that don't support PTRACE_GET_SYSCALL_INFO.
This means that the minimal supported kernel version is now 5.3.

New Features

The ptrace backend now allows tracees to do 32bit syscalls on x64 architecture.
And traces for 32bit exec syscalls are now available in tracexec.

A new feature ebpf-no-rcu-kfuncs is added and disabled by default.
For kernel versions less than 6.2, you'll need to enable this feature to make the eBPF backend work.

Fixes

  • Make tests work in non-FHS environment.

Other Changes

  • Update dependencies, notably bumping ratatui to 0.29.
  • Add a (very rough) nix flake to test the eBPF backend on different kernel versions.
  • CI: bump rust to 1.82

v0.7.0

16 Oct 00:25
v0.7.0
Compare
Choose a tag to compare

New Features

  • The experimental eBPF backend is updated to also monitor 32bit exec on x64 systems.
    • I plan to support tracing 32bit exec in ptrace backend as well in 0.8.0 release.
  • Previously, all experimental features are only labeled in the help text of CLI.
    Now the experimental features are also labeled in TUI:

experimental features

Deprecation

The support for kernel version < 5.3 is deprecated and will be removed in the future.
It is likely that it will happen in the upcoming 0.8.0 release.

Breaking Changes

Building tracexec with seccomp-bpf feature now requires libseccomp dependency.
By default, we dynamically link to libseccomp. In order to statically link to libseccomp,
please set LIBSECCOMP_LINK_TYPE to static and set LIBSECCOMP_LIB_PATH to the path of
the directory containing libseccomp.a.

Fixes

  • ptracer: use SIGSTOP as sentinel signal.
  • eBPF: __TARGET_ARCH_xx define gets fixed for arm64 and riscv64(in libbpf-rs: libbpf/libbpf-rs#958 and libbpf/libbpf-rs#959).
  • Switch seccomp-bpf dependency crate from seccompiler to libseccomp.
    • This unblocks 32bit exec tracing for ptrace backend that I plan to implement in 0.8.0.
    • And seccomp-bpf feature can now be enabled on riscv64.

Internal Changes

  • Bump dependencies
  • Make clippy more annoying
  • eBPF: convert from syscall tracepoint to fentry/fexit
  • eBPF: minor refactors

v0.7.0-rc.3

16 Oct 00:12
v0.7.0-rc.3
Compare
Choose a tag to compare
v0.7.0-rc.3 Pre-release
Pre-release

New Features

  • The experimental eBPF backend is updated to also monitor 32bit exec on x64 systems.
    • I plan to support tracing 32bit exec in ptrace backend as well in 0.8.0 release.
  • Previously, all experimental features are only labeled in the help text of CLI.
    Now the experimental features are also labeled in TUI:

experimental features

Deprecation

The support for kernel version < 5.3 is deprecated and will be removed in the future.
It is likely that it will happen in the upcoming 0.8.0 release.

Breaking Changes

Building tracexec with seccomp-bpf feature now requires libseccomp dependency.
By default, we dynamically link to libseccomp. In order to statically link to libseccomp,
please set LIBSECCOMP_LINK_TYPE to static and set LIBSECCOMP_LIB_PATH to the path of
the directory containing libseccomp.a.

Fixes

  • ptracer: use SIGSTOP as sentinel signal.
  • eBPF: __TARGET_ARCH_xx define gets fixed for arm64 and riscv64(in libbpf-rs: libbpf/libbpf-rs#958 and libbpf/libbpf-rs#959).
  • Switch seccomp-bpf dependency crate from seccompiler to libseccomp.
    • This unblocks 32bit exec tracing for ptrace backend that I plan to implement in 0.8.0.
    • And seccomp-bpf feature can now be enabled on riscv64.

Internal Changes

  • Bump dependencies
  • Make clippy more annoying
  • eBPF: convert from syscall tracepoint to fentry/fexit
  • eBPF: minor refactors

v0.6.2

07 Oct 03:51
v0.6.2
Compare
Choose a tag to compare
  • Fix: Update dependencies to get rid of yanked futures-util 0.3.30
  • Fix: Ensure build-script is built with the same vendoring feature as the main binary
  • CI: Fix a typo in CI yaml that caused the released static binaries to be non static.
  • CI: Enable eBPF for riscv64.
  • CI: Enable static builds for riscv64.

v0.6.2-rc.2

07 Oct 03:43
v0.6.2-rc.2
Compare
Choose a tag to compare
v0.6.2-rc.2 Pre-release
Pre-release
  • Fix: Update dependencies to get rid of yanked futures-util 0.3.30
  • Fix: Ensure build-script is built with the same vendoring feature as the main binary
  • CI: Fix a typo in CI yaml that caused the released static binaries to be non static.
  • CI: Enable eBPF for riscv64.
  • CI: Enable static builds for riscv64.

v0.6.2-rc.1

07 Oct 03:26
v0.6.2-rc.1
Compare
Choose a tag to compare
v0.6.2-rc.1 Pre-release
Pre-release
  • Fix: Update dependencies to get rid of yanked futures-util 0.3.30
  • Fix: Ensure build-script is built with the same vendoring feature as the main binary
  • eBPF: Use a better workaround in eBPF code(empty printk workaround is removed).
  • CI: Fix a typo in CI yaml that caused the released static binaries to be non static.
  • CI: Enable eBPF for riscv64.
  • CI: Enable static builds for riscv64.

v0.6.1

27 Sep 15:04
v0.6.1
Compare
Choose a tag to compare
  • Docs: document dependencies for building in INSTALL.md.
  • CI: Bump ubuntu to 24.04, with clang 18 as default clang.
  • Previously, when building tracexec, even if --no-default-feaures is specified,
    libbpf still gets vendored once because it is also depended in libbpf-cargo build dependency.
    This release fixes it.
  • Fix the help entry of breakpoint manager.
  • Fix: eBPF: only remove pgid from closure if follow-forks
  • Fix: eBPF: simplify program to make it load on kernel >= 6.8
  • Fix: eBPF: add a temporary workaround(d7f23b4) to make it load in release mode on new kernels.
    A side effect is some empty printk output in /sys/kernel/debug/tracing/trace_pipe. See the commit for more details.

v0.6.1-rc.1

27 Sep 14:58
v0.6.1-rc.1
Compare
Choose a tag to compare
v0.6.1-rc.1 Pre-release
Pre-release
  • Docs: document dependencies for building in INSTALL.md.
  • CI: Bump ubuntu to 24.04, with clang 18 as default clang.
  • Previously, when building tracexec, even if --no-default-feaures is specified,
    libbpf still gets vendored once because it is also depended in libbpf-cargo build dependency.
    This release fixes it.
  • Fix the help entry of breakpoint manager.
  • Fix: eBPF: only remove pgid from closure if follow-forks
  • Fix: eBPF: simplify program to make it load on kernel >= 6.8
  • Fix: eBPF: add a temporary workaround(d7f23b4) to make it load in release mode on new kernels.
    A side effect is some empty printk output in /sys/kernel/debug/tracing/trace_pipe. See the commit for more details.

v0.6.1-beta.2

22 Sep 08:18
v0.6.1-beta.2
Compare
Choose a tag to compare
v0.6.1-beta.2 Pre-release
Pre-release
  • Docs: document dependencies for building in INSTALL.md.
  • CI: Bump ubuntu to 24.04, with clang 18 as default clang.
  • Previously, when building tracexec, even if --no-default-feaures is specified,
    libbpf still gets vendored once because it is also depended in libbpf-cargo build dependency.
    This release fixes it.
  • Fix the help entry of breakpoint manager.
  • Fix: eBPF: only remove pgid from closure if follow-forks
  • Fix: eBPF: simplify program to make it load on kernel >= 6.8

v0.6.1-beta.1

22 Sep 06:52
v0.6.1-beta.1
Compare
Choose a tag to compare
v0.6.1-beta.1 Pre-release
Pre-release
  • Previously, when building tracexec, even if --no-default-feaures is specified,
    libbpf still gets vendored once because it is also depended in libbpf-cargo build dependency.
    This release fixes it.
  • Fix the help entry of breakpoint manager.
  • Fix: eBPF: only remove pgid from closure if follow-forks
  • Fix: eBPF: simplify program to make it load on kernel >= 6.8