cuviper / probe-rs

probe: Static probes for Rust
Apache License 2.0
92 stars 9 forks source link

Semaphores break bpftrace usdt? #18

Closed caizixian closed 1 year ago

caizixian commented 1 year ago

System info:

System
  OS: Linux 5.15.0-58-generic #64~20.04.1-Ubuntu SMP Fri Jan 6 16:42:31 UTC 2023
  Arch: x86_64

Build
  version: v0.17.0
  LLVM: 12.0.0
  unsafe uprobe: no
  bfd: yes
  libdw (DWARF support): no

Kernel helpers
  probe_read: yes
  probe_read_str: yes
  probe_read_user: yes
  probe_read_user_str: yes
  probe_read_kernel: yes
  probe_read_kernel_str: yes
  get_current_cgroup_id: yes
  send_signal: yes
  override_return: yes
  get_boot_ns: yes
  dpath: yes
  skboutput: no

Kernel features
  Instruction limit: 1000000
  Loop support: yes
  btf: yes
  map batch: yes
  uprobe refcount (depends on Build:bcc bpf_attach_uprobe refcount): yes

Map types
  hash: yes
  percpu hash: yes
  array: yes
  percpu array: yes
  stack_trace: yes
  perf_event_array: yes

Probe types
  kprobe: yes
  tracepoint: yes
  perf_event: yes
  kfunc: yes
  iter:task: yes
  iter:task_file: yes
  kprobe_multi: no
  raw_tp_special: yes

When I use the 0.3 version of the crate, usdt probes can fire normally in when traced with bpftrace. However, I can't seem to get it work with 0.4 version of the crate.

caizixian commented 1 year ago

bpftrace needs to activate semaphores https://github.com/iovisor/bpftrace/issues/1295