Comment 1 for bug 1683876

Revision history for this message
Rafael David Tinoco (rafaeldtinoco) wrote : Re: systemtap doesn't works on xenial with kernels > 4.4

In my case, for a simple process trace (from utrace/uprobe):

sudo stap -e 'probe process("ls").function("*").call { log (probefunc()." ".$$parms) }' -c 'ls -l'

Generates:

http://pastebin.ubuntu.com/24414785/

And you can clearly see incompatibility between systemtap runtime (used to create stap kernel modules):

----

static int
__access_process_vm_ (struct task_struct *tsk, unsigned long addr, void *buf,
              int len, int write,
              void (*writer) (struct vm_area_struct * vma,
                      struct page * page, unsigned long vaddr,
                      void *dst, void *src, int len),
              void (*reader) (struct vm_area_struct * vma,
                      struct page * page, unsigned long vaddr,
                      void *dst, void *src, int len))
{

...
      ret = get_user_pages (tsk, mm, addr, 1, write, 1, &page, &vma);

and kernel we're running in, with function prototypes declared at:

"/usr/src/linux-headers-4.8.0-48/include/linux/mm.h" as:

long get_user_pages(unsigned long start, unsigned long nr_pages,
                int write, int force, struct page **pages,
                struct vm_area_struct **vmas);
----

IMO, HWE kernels should be followed with new systemtap userland packages, for every HWE kernel release, specially for LTS versions.

By backporting yakkety systemtap I got everything working:

ii systemtap 3.0-7 amd64 instrumentation system for Linux
ii systemtap-common 3.0-7 all instrumentation system for Linux (common component)
ii systemtap-doc 3.0-7 all documentation and examples for SystemTap
ii systemtap-runtime 3.0-7 amd64 instrumentation system for Linux (runtime component)

http://pastebin.ubuntu.com/24414866/