This is an old revision of the document!
DTrace TODO
This page is for brainstorming and coordinating efforts with DTrace development. Anyone who has and idea/wish can add an item and if you work on one of those you grab it. You can always mail the freebsd-dtrace mailing list in case you do not have write access to the wiki, have questions or want to work on this but are not (yet;-) a FreeBSD committer.
Most of these problems are specific to FreeBSD's DTrace implementation, but some of them are upstream (illumos) issues as well.
DTrace TODO items
| added by | responsible | state | task |
|---|---|---|---|
| JohnBirrell | committed | We need a BSD version of libelf. Or at least one that can handle host endian != target endian. This affects cross-builds on dissimilar architectures (like i386 host, sparc64 target). See LibElf | |
| JohnBirrell | StaceySon | committed | Get ustack()/jstack() actions working. See ustack patch. (Only outputs hex PC values for now because of the lack of symbol table support in libproc.) |
| JohnBirrell | MarkJohnston (partially) | committed | Implement args beyond arg4. See r256822 and r251238. |
| JohnBirrell | StaceySon | committed | Implement lockstat – including both driver and command. See lockstat kernel patch, lockstat cmd patch, and ksyms pseudo driver. |
| JohnBirrell | Implement toxic ranges. | ||
| JohnBirrell | Implement stop() action. | ||
| JohnBirrell | Port MDB DTrace-related dcmds to FreeBSD debugger. | ||
| JohnBirrell | StaceySon | committed | Get stack() action working. (Committed a while ago.) |
| JohnBirrell | Need to add mailbox IPI's to allow a function to be executed on another CPU. | ||
| JohnBirrell | Credentials and privileges need a lot of work. | ||
| JohnBirrell | The ability to trace a process running on a different CPU is an important part of DTrace. Somebody needs to test that. | ||
| JohnBirrell | MikeMa, MarkJohnston | committed | Solaris has a vmem subsystem which is an integral part of their virtual memory. FreeBSD 10 has a new vmem(9) implementation with the required functions vmem_create(), vmem_destroy(), vmem_alloc(), and vmem_free(). |
| JohnBirrell | There are lots of places in the build where the ctfconvert and ctfmerge tools complain about the objects they are processing. Those issues need to be resolved. | ||
| StaceySon | RuiPaulo | committed | Add symbol support to libproc. |
| StaceySon | Add missing built-in variables: ipl, zonename (jailname) | ||
| StaceySon | StaceySon | committed | Add missing built-in variable 'uregs[]'. See uregs patch. |
| StaceySon | StaceySon | committed | Add missing built-in variable 'ustackdepth'. See ustackdepth patch |
| StaceySon | StaceySon | committed | Add missing built-in variable 'ucaller'. See ucaller patch |
| StaceySon | committed | Get uaddr(), ufunc(), umod(), and usym() action funtions working. | |
| StaceySon | StaceySon | committed | Fix prochandler() in dtrace.c so that 'dtrace -c' works correctly. See prochandler preliminary patch |
| StaceySon | RyanStone, MarkJohnston | committed | SDT provider support for kernel modules. Reported by np@. |
| StaceySon | AndriyGapon | committed | DTrace is missing symbol info for kernel modules. Reported by np@. |
| PedroGiffuni | The DTrace userland tool has to run as root: it would be beneficial to have it use capsicum(4). | ||
| MarkJohnston | Fix problems with lockstat. It basically works, but there are problems. See avg's post. Also go through all the examples in the illumos lockstat(1) man page and fix them for FreeBSD; many of them are omitted from the FreeBSD lockstat(1) man page because they don't work properly. Also see PR 166925. | ||
| MarkJohnston | MarkJohnston | wip | Get libproc to look up symbols through a .gnu_debuglink ELF section, so that userland DTrace works properly with WITH_DEBUG_FILES. |
| MarkJohnston | dtrace(1) apparently has various troubles when run within in a jail. | ||
| MarkJohnston | MarkJohnston | wip | Get the DTrace test suite down to 0 failures. On my machine it's currently at 948/999 tests passing. Many of the failing tests are for userland DTrace. I've also fixed some test issues caused by various Solarisms. Also find a good place to add regression tests for issues found in FreeBSD. |
| MarkJohnston | MarkJohnston | wip | Port the cpc provider to FreeBSD, or implement something similar. |
| MarkJohnston | There are a bunch of ports that have USDT probes that aren't enabled on FreeBSD. Find them and add support. An easy place to start is tcl, a less easy place to start is perl, and a less less easy place to start is openJDK. Email markj@freebsd.org for the first two, I've made some progress on them already. | ||
| MarkJohnston | Submit DTrace patches back to illumos. There are some bug fixes in our DTrace implementation that are not specific to FreeBSD. They are minor for the most part, but should be upstreamed. Maybe the illumos people don't mind having #ifdef FreeBSD in their code? :) | ||
| MarkJohnston | Improve documentation. I would very much like to see man pages for each of our SDT providers. Here is a proposed example. | ||
| MarkJohnston | plockstat provider | ||
| MarkJohnston | Fix dtrace kernel module unloads. At the moment this frequently causes kernel crashes, making it difficult to test changes to the DTrace kernel code. | ||
| MarkJohnston | Fix dtrace -h and dtrace -G to not depend on dtrace.ko being loaded (I'm pretty sure there's no reason for this). Otherwise ports with DTrace probes can't be built as non-root or without loading the modules first. | ||
| HowardSu | HowardSu | wip | Port dtrace to arm platform. based on the early work done by gonzo@ |
review = needs code review, wip = “work in progress”