2016-03-16 18:16:45 |
Dan Streetman |
description |
Systemtap doesn't work on xenial, due to changes in struct module in the kernel:
ubuntu@xenial:~$ sudo stap test.stap
In file included from /usr/share/systemtap/runtime/print.c:17:0,
from /usr/share/systemtap/runtime/runtime_context.h:22,
from /tmp/stapxvNfgC/stap_2e27f5927a5796b18cb7b3c2abd24ec4_812_src.c:50:
/usr/share/systemtap/runtime/linux/print.c: In function ‘_stp_print_kernel_info’:
/usr/share/systemtap/runtime/linux/print.c:242:20: error: ‘struct module’ has no member named ‘module_core’
THIS_MODULE->module_core,
^
/usr/share/systemtap/runtime/linux/print.c:243:37: error: ‘struct module’ has no member named ‘core_size’
(unsigned long) (THIS_MODULE->core_size - THIS_MODULE->core_text_size)/1024,
^
/usr/share/systemtap/runtime/linux/print.c:243:62: error: ‘struct module’ has no member named ‘core_text_size’
(unsigned long) (THIS_MODULE->core_size - THIS_MODULE->core_text_size)/1024,
^
/usr/share/systemtap/runtime/linux/print.c:244:44: error: ‘struct module’ has no member named ‘core_text_size’
(unsigned long) (THIS_MODULE->core_text_size)/1024,
^
scripts/Makefile.build:258: recipe for target '/tmp/stapxvNfgC/stap_2e27f5927a5796b18cb7b3c2abd24ec4_812_src.o' failed
make[1]: *** [/tmp/stapxvNfgC/stap_2e27f5927a5796b18cb7b3c2abd24ec4_812_src.o] Error 1
Makefile:1396: recipe for target '_module_/tmp/stapxvNfgC' failed
make: *** [_module_/tmp/stapxvNfgC] 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. |
[Impact]
Attempting to use systemtap on xenial with the 4.4 kernel results in:
ubuntu@xenial:~$ sudo stap test.stap
In file included from /usr/share/systemtap/runtime/print.c:17:0,
from /usr/share/systemtap/runtime/runtime_context.h:22,
from /tmp/stapxvNfgC/stap_2e27f5927a5796b18cb7b3c2abd24ec4_812_src.c:50:
/usr/share/systemtap/runtime/linux/print.c: In function ‘_stp_print_kernel_info’:
/usr/share/systemtap/runtime/linux/print.c:242:20: error: ‘struct module’ has no member named ‘module_core’
THIS_MODULE->module_core,
^
/usr/share/systemtap/runtime/linux/print.c:243:37: error: ‘struct module’ has no member named ‘core_size’
(unsigned long) (THIS_MODULE->core_size - THIS_MODULE->core_text_size)/1024,
^
/usr/share/systemtap/runtime/linux/print.c:243:62: error: ‘struct module’ has no member named ‘core_text_size’
(unsigned long) (THIS_MODULE->core_size - THIS_MODULE->core_text_size)/1024,
^
/usr/share/systemtap/runtime/linux/print.c:244:44: error: ‘struct module’ has no member named ‘core_text_size’
(unsigned long) (THIS_MODULE->core_text_size)/1024,
^
scripts/Makefile.build:258: recipe for target '/tmp/stapxvNfgC/stap_2e27f5927a5796b18cb7b3c2abd24ec4_812_src.o' failed
make[1]: *** [/tmp/stapxvNfgC/stap_2e27f5927a5796b18cb7b3c2abd24ec4_812_src.o] Error 1
Makefile:1396: recipe for target '_module_/tmp/stapxvNfgC' failed
make: *** [_module_/tmp/stapxvNfgC] 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 xenial system with the 4.4 kernel installed, and systemtap and kernel dbgsyms installed, simply create a dummy stap script and try to run it, e.g.:
$ cat test.stap
#!/usr/bin/stap
probe begin {
println("hello")
}
$ sudo stap test.stap
the above compilation failure will result.
[Regression Potential]
The commit updates stap to use the kernel module header correctly based on a small test program, so there should be no regression, but possible regression is breaking stap on the xenial 4.3 kernel.
[Other Info]
this requires upstream stap commit
3f040971e7efb4d323fcb63d83b4337f355c60db |
|