[Bug 1545173] Re: systemtap does not work on trusty lts-vivid kernel
Dan Streetman
dan.streetman at canonical.com
Wed Mar 16 16:39:17 UTC 2016
** Description changed:
- Attempting to use systemtap results in:
+ [Impact]
+
+ Attempting to use systemtap on trusty with the lts-vivid kernel fails
+ with:
In file included from /usr/share/systemtap/runtime/linux/task_finder.c:17:0,
- from /usr/share/systemtap/runtime/linux/runtime.h:188,
- from /usr/share/systemtap/runtime/runtime.h:24,
- from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
+ from /usr/share/systemtap/runtime/linux/runtime.h:188,
+ from /usr/share/systemtap/runtime/runtime.h:24,
+ from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
/usr/share/systemtap/runtime/linux/task_finder2.c: In function ‘__stp_call_mmap_callbacks_with_addr’:
/usr/share/systemtap/runtime/linux/task_finder2.c:703:24: error: ‘struct file’ has no member named ‘f_dentry’
- dentry = vma->vm_file->f_dentry;
- ^
+ dentry = vma->vm_file->f_dentry;
+ ^
/usr/share/systemtap/runtime/linux/task_finder2.c: In function ‘__stp_utrace_attach_match_filename’:
/usr/share/systemtap/runtime/linux/task_finder2.c:821:11: error: incompatible types when assigning to type ‘uid_t’ from type ‘kuid_t’
- tsk_euid = task_euid(tsk);
- ^
+ tsk_euid = task_euid(tsk);
+ ^
/usr/share/systemtap/runtime/linux/task_finder2.c: In function ‘__stp_call_mmap_callbacks_for_task’:
/usr/share/systemtap/runtime/linux/task_finder2.c:1206:42: error: ‘struct file’ has no member named ‘f_dentry’
- vma_cache_p->dentry = vma->vm_file->f_dentry;
- ^
+ vma_cache_p->dentry = vma->vm_file->f_dentry;
+ ^
/usr/share/systemtap/runtime/linux/task_finder2.c: In function ‘stap_start_task_finder’:
/usr/share/systemtap/runtime/linux/task_finder2.c:1711:12: error: incompatible types when assigning to type ‘uid_t’ from type ‘kuid_t’
- tsk_euid = task_euid(tsk);
- ^
+ tsk_euid = task_euid(tsk);
+ ^
In file included from /usr/share/systemtap/runtime/linux/runtime.h:194:0,
- from /usr/share/systemtap/runtime/runtime.h:24,
- from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
+ from /usr/share/systemtap/runtime/runtime.h:24,
+ from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
/usr/share/systemtap/runtime/sym.c: In function ‘_stp_snprint_addr’:
/usr/share/systemtap/runtime/sym.c:567:4: error: implicit declaration of function ‘preempt_enable_no_resched’ [-Werror=implicit-function-declaration]
- preempt_enable_no_resched();
- ^
+ preempt_enable_no_resched();
+ ^
In file included from include/linux/sched.h:56:0,
- from include/linux/ptrace.h:5,
- from include/linux/ftrace.h:13,
- from include/linux/kprobes.h:42,
- from /usr/share/systemtap/runtime/linux/runtime.h:21,
- from /usr/share/systemtap/runtime/runtime.h:24,
- from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
+ from include/linux/ptrace.h:5,
+ from include/linux/ftrace.h:13,
+ from include/linux/kprobes.h:42,
+ from /usr/share/systemtap/runtime/linux/runtime.h:21,
+ from /usr/share/systemtap/runtime/runtime.h:24,
+ from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
/usr/share/systemtap/runtime/transport/control.c: In function ‘_stp_ctl_write_cmd’:
include/linux/cred.h:343:25: error: incompatible types when initializing type ‘uid_t’ using type ‘kuid_t’
- #define current_euid() (current_cred_xxx(euid))
- ^
+ #define current_euid() (current_cred_xxx(euid))
+ ^
/usr/share/systemtap/runtime/transport/control.c:41:15: note: in expansion of macro ‘current_euid’
- uid_t euid = current_euid();
- ^
+ uid_t euid = current_euid();
+ ^
In file included from /usr/share/systemtap/runtime/linux/print.c:17:0,
- from /usr/share/systemtap/runtime/print.c:17,
- from /usr/share/systemtap/runtime/runtime_context.h:22,
- from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:67:
+ from /usr/share/systemtap/runtime/print.c:17,
+ from /usr/share/systemtap/runtime/runtime_context.h:22,
+ from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:67:
/usr/share/systemtap/runtime/transport/transport.c: In function ‘_stp_transport_init’:
/usr/share/systemtap/runtime/transport/transport.c:344:11: error: incompatible types when assigning to type ‘uid_t’ from type ‘kuid_t’
- _stp_uid = current_uid();
- ^
+ _stp_uid = current_uid();
+ ^
/usr/share/systemtap/runtime/transport/transport.c:345:11: error: incompatible types when assigning to type ‘gid_t’ from type ‘kgid_t’
- _stp_gid = current_gid();
- ^
+ _stp_gid = current_gid();
+ ^
cc1: all warnings being treated as errors
make[1]: *** [/tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.o] Error 1
make: *** [_module_/tmp/stapcEoS7h] Error 2
WARNING: kbuild exited with status: 2
Pass 4: compilation failed. [man error::pass4]
Tip: /usr/share/doc/systemtap/README.Debian should help you get started.
- several upstream patches are required to get systemtap working with the lts kernel.
+ [Test Case]
+
+ on a trusty system that's running a lts-vivid kernel, with the kernel
+ dbgsym deb installed, simply create a dummy systemtap script and try to
+ run it, e.g.
+
+ $ cat test.stap
+ #!/usr/bin/stap
+
+ probe kernel.function("find_module") {
+ println("hello")
+ }
+ $ sudo stap test.stap
+
+ the above compliation failure will happen.
+
+ [Regression Potential]
+
+ As this only changes how systemtap uses the kernel header structures,
+ the most likely regression is systemtap failing to compile on earlier
+ kernels.
+
+ I tested on the trusty 3.13 kernel and the updated stap does still
+ compile and run the test case above.
+
+ [Other Info]
+
+ The commits provided in the debdiff fix systemtap to correctly use the kernel header functions for the newer kernel; they are cherry-picked from upstream systemtap.
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to systemtap in Ubuntu.
https://bugs.launchpad.net/bugs/1545173
Title:
systemtap does not work on trusty lts-vivid kernel
Status in systemtap package in Ubuntu:
Fix Released
Status in systemtap source package in Trusty:
In Progress
Bug description:
[Impact]
Attempting to use systemtap on trusty with the lts-vivid kernel fails
with:
In file included from /usr/share/systemtap/runtime/linux/task_finder.c:17:0,
from /usr/share/systemtap/runtime/linux/runtime.h:188,
from /usr/share/systemtap/runtime/runtime.h:24,
from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
/usr/share/systemtap/runtime/linux/task_finder2.c: In function ‘__stp_call_mmap_callbacks_with_addr’:
/usr/share/systemtap/runtime/linux/task_finder2.c:703:24: error: ‘struct file’ has no member named ‘f_dentry’
dentry = vma->vm_file->f_dentry;
^
/usr/share/systemtap/runtime/linux/task_finder2.c: In function ‘__stp_utrace_attach_match_filename’:
/usr/share/systemtap/runtime/linux/task_finder2.c:821:11: error: incompatible types when assigning to type ‘uid_t’ from type ‘kuid_t’
tsk_euid = task_euid(tsk);
^
/usr/share/systemtap/runtime/linux/task_finder2.c: In function ‘__stp_call_mmap_callbacks_for_task’:
/usr/share/systemtap/runtime/linux/task_finder2.c:1206:42: error: ‘struct file’ has no member named ‘f_dentry’
vma_cache_p->dentry = vma->vm_file->f_dentry;
^
/usr/share/systemtap/runtime/linux/task_finder2.c: In function ‘stap_start_task_finder’:
/usr/share/systemtap/runtime/linux/task_finder2.c:1711:12: error: incompatible types when assigning to type ‘uid_t’ from type ‘kuid_t’
tsk_euid = task_euid(tsk);
^
In file included from /usr/share/systemtap/runtime/linux/runtime.h:194:0,
from /usr/share/systemtap/runtime/runtime.h:24,
from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
/usr/share/systemtap/runtime/sym.c: In function ‘_stp_snprint_addr’:
/usr/share/systemtap/runtime/sym.c:567:4: error: implicit declaration of function ‘preempt_enable_no_resched’ [-Werror=implicit-function-declaration]
preempt_enable_no_resched();
^
In file included from include/linux/sched.h:56:0,
from include/linux/ptrace.h:5,
from include/linux/ftrace.h:13,
from include/linux/kprobes.h:42,
from /usr/share/systemtap/runtime/linux/runtime.h:21,
from /usr/share/systemtap/runtime/runtime.h:24,
from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:24:
/usr/share/systemtap/runtime/transport/control.c: In function ‘_stp_ctl_write_cmd’:
include/linux/cred.h:343:25: error: incompatible types when initializing type ‘uid_t’ using type ‘kuid_t’
#define current_euid() (current_cred_xxx(euid))
^
/usr/share/systemtap/runtime/transport/control.c:41:15: note: in expansion of macro ‘current_euid’
uid_t euid = current_euid();
^
In file included from /usr/share/systemtap/runtime/linux/print.c:17:0,
from /usr/share/systemtap/runtime/print.c:17,
from /usr/share/systemtap/runtime/runtime_context.h:22,
from /tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.c:67:
/usr/share/systemtap/runtime/transport/transport.c: In function ‘_stp_transport_init’:
/usr/share/systemtap/runtime/transport/transport.c:344:11: error: incompatible types when assigning to type ‘uid_t’ from type ‘kuid_t’
_stp_uid = current_uid();
^
/usr/share/systemtap/runtime/transport/transport.c:345:11: error: incompatible types when assigning to type ‘gid_t’ from type ‘kgid_t’
_stp_gid = current_gid();
^
cc1: all warnings being treated as errors
make[1]: *** [/tmp/stapcEoS7h/stap_f4621118dc34d17850373d218d3dab98_4225_src.o] Error 1
make: *** [_module_/tmp/stapcEoS7h] Error 2
WARNING: kbuild exited with status: 2
Pass 4: compilation failed. [man error::pass4]
Tip: /usr/share/doc/systemtap/README.Debian should help you get started.
[Test Case]
on a trusty system that's running a lts-vivid kernel, with the kernel
dbgsym deb installed, simply create a dummy systemtap script and try
to run it, e.g.
$ cat test.stap
#!/usr/bin/stap
probe kernel.function("find_module") {
println("hello")
}
$ sudo stap test.stap
the above compliation failure will happen.
[Regression Potential]
As this only changes how systemtap uses the kernel header structures,
the most likely regression is systemtap failing to compile on earlier
kernels.
I tested on the trusty 3.13 kernel and the updated stap does still
compile and run the test case above.
[Other Info]
The commits provided in the debdiff fix systemtap to correctly use the kernel header functions for the newer kernel; they are cherry-picked from upstream systemtap.
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/systemtap/+bug/1545173/+subscriptions
More information about the foundations-bugs
mailing list