Roadmap of potential features and fixes
javierhonduco opened this issue · comments
Javier Honduvilla Coto commented
Some of the things I have planned:
- UX
- Quality
- Add tests for C data structure parsing and "serialisation". Run valgrind / asan on them, too (2e3d1c0)
- Compile BPF code with warnings on (cb0e7b4)
- Gather error statistics (right now they are mixed / not well categorised, e.g. a map can fail to write in kernel or to read from in userspace) (4de5dee)
- Upstream elfutils and zlib static linking patches (libbpf/libbpf-sys@371a85d, libbpf/libbpf-rs@5bed52a)
- Add tests for big stacks that require BPF tail-calls (b474d3f)
- Address PID reuse race condition: ( 272c8f3)
- Verify that frames that we think are native are indeed native frames (https://github.com/javierhonduco/rbperf/blob/422c5ca6ffd0d7693/src/bpf/rbperf.bpf.c#L235)
- BPF
- Docs
- Add a document on architecture, as well as in-depth comments in the BPF code
- How to debug issues
- How to add support for Ruby versions
- New features
- Binary disk format
- More output formats (folded stacks, chrome tracing, raw?)
- Ensure it works in arm64
- C function tracing, both from cruby or the libraries it dynamically links to (uprobes)
- Experimental ideas
- Allocation tracing (w/ mem leak detection)
- Request-specific data
- Other
- Ensure we work with YJIT (asked in https://github.com/Shopify/yjit/. It works so far, but this might change)
- Add git revision to the future info subcommand and in the BPF's metadata section
- Release
- Publish x86_64 binaries
Simplify execution context fetching:
(gdb) p/x ruby_current_vm_ptr->ractor->main_thread->ec
$1 = 0x20729b0
(gdb) p/x ruby_current_ec
$2 = 0x20729b0