Можно ли использовать systemtap 1.7/2.1 в Ubuntu 12.04 с ядрами 3.5.0/3.8.0?

Моя цель — получить возможность использовать зонды пользовательского пространства на хосте Ubuntu 12.04/precise. Это возможно начиная с ядра 3.5.0, поэтому я установил следующие пакеты:

linux-headers-3.5.0-34
linux-headers-3.5.0-34-generic
linux-image-3.5.0-34-generic
linux-image-3.5.0-34-generic-dbgsym
linux-image-generic-lts-quantal
linux-source
linux-source-3.5.0

и systemtap v1.7 из 12.10/Quantal.

Но единственное, что я вижу после запуска любого stap-скрипта, это:

ERROR: module version mismatch (#55-Ubuntu SMP Thu Jun 6 20:18:19 UTC 2013 vs #55~precise1-Ubuntu SMP Fri Jun 7 16:25:50 UTC 2013), release 3.5.0-34-generic
ERROR: Build-id mismatch [man error::buildid]: "/usr/lib/debug/boot/vmlinux-3.5.0-34-generic" byte 0 (0x84 vs 0xc2) address 0xffffffff8168e60c rc 0

имя-а:

Linux nginx-dev01g 3.5.0-34-generic #55~precise1-Ubuntu SMP Fri Jun 7 16:25:50 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

systemtap v2.1 от 13.04/raring показывает точно такую ​​же ошибку.

systemtap v1.6 (версия по умолчанию в 12.04) дает сбой во время компиляции:

In file included from /usr/share/systemtap/runtime/transport/transport.c:53:0,
             from /usr/share/systemtap/runtime/print.c:18,
             from /usr/share/systemtap/runtime/runtime.h:128,
             from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:59:
/usr/share/systemtap/runtime/transport/relay_v2.c:241:2: error: initialization from incompatible pointer type [-Werror]
/usr/share/systemtap/runtime/transport/relay_v2.c:241:2: error: (near initialization for ‘__stp_relay_callbacks.create_buf_file’) [-Werror]
In file included from /usr/share/systemtap/runtime/print.c:18:0,
             from /usr/share/systemtap/runtime/runtime.h:128,
             from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:59:
/usr/share/systemtap/runtime/transport/transport.c: In function ‘_stp_get_root_dir’:
/usr/share/systemtap/runtime/transport/transport.c:386:8: error: ‘struct hlist_head’ has no member named ‘next’
In file included from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:61:0:
/usr/share/systemtap/runtime/stat.c: In function ‘_stp_stat_get’:
/usr/share/systemtap/runtime/stat.c:213:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/stat.c:213:2: note: each undeclared identifier is reported only once for each function it appears in
/usr/share/systemtap/runtime/stat.c: In function ‘_stp_stat_clear’:
/usr/share/systemtap/runtime/stat.c:248:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
In file included from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:13594:0:
/usr/share/systemtap/runtime/pmap-gen.c: In function ‘_stp_pmap_new_sx’:
/usr/share/systemtap/runtime/pmap-gen.c:717:3: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/pmap-gen.c: In function ‘_stp_pmap_get_sx’:
/usr/share/systemtap/runtime/pmap-gen.c:943:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
In file included from /usr/share/systemtap/runtime/map.c:20:0,
             from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:13609:
/usr/share/systemtap/runtime/map-stat.c: In function ‘_stp_pmap_new_hstat_linear’:
/usr/share/systemtap/runtime/map-stat.c:71:3: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map-stat.c: In function ‘_stp_pmap_new_hstat_log’:
/usr/share/systemtap/runtime/map-stat.c:98:3: error: ‘cpu_possible_map’ undeclared (first use in this function)
In file included from /tmp/stapYh6Wqv/stap_c22f4bc3b03cd6f9fed549d2973f11fd_361755.c:13609:0:
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_new’:
/usr/share/systemtap/runtime/map.c:242:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_clear’:
/usr/share/systemtap/runtime/map.c:350:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_del’:
/usr/share/systemtap/runtime/map.c:402:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_agg’:
/usr/share/systemtap/runtime/map.c:732:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
/usr/share/systemtap/runtime/map.c: In function ‘_stp_pmap_size’:
/usr/share/systemtap/runtime/map.c:908:2: error: ‘cpu_possible_map’ undeclared (first use in this function)
cc1: all warnings being treated as errors

К сожалению, обновление до 12.10/13.04 невозможно.

Итак, есть ли шанс получить рабочий systemtap с ядрами 3.5.0 или 3.8.0 в Ubuntu 12.04/precise?


person Andrei Belov    schedule 11.07.2013    source источник


Ответы (2)


Возможно, вам придется обновить вашу версию systemtap, так как очень старая версия (например, 1.7 от начала 2012 года) часто не будет работать с очень новым ядром (но наоборот все в порядке).

OTOH, исходная ошибка идентификатора сборки — это реальная проблема несоответствия версий в репозиториях ubuntu -dbgsym. Вам нужно убедиться, что версия вашего работающего ядра точно соответствует версии dbgsym. С Ubuntu это может быть сложно, потому что «uname -r» и имена dpkg не содержат уникальной идентификации сборки. Увидите разницу между:

#55-Ubuntu SMP Thu Jun 6 20:18:19 UTC 2013

а также

#55~precise1-Ubuntu SMP Fri Jun 7 16:25:50 UTC 2013

Зачем вам нужны символы отладки ядра для зондов пользовательского пространства? Пожалуйста, включите ваш stap-скрипт и вывод stap-отчета. Попробуйте также скрипт stap-prep.

Еще одним усложняющим фактором является возможное отсутствие CONFIG_UPROBES в ядре Ubuntu. См. также http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=691167

person fche    schedule 12.07.2013

Я скомпилировал systemstap версии 2.3. Он работает на Ubuntu 12.04 с linux-image-3.5.0-40-generic-dbgsym.

Установите ядро ​​с отладочной информацией. Где взять символы отладки для ядра X?

Скомпилировать systemstap 2.3

sudo apt-get build-dep systemtap
git clone git://sourceware.org/git/systemtap.git
cd systemtap
git checkout release-2.3
./configure
make all # you can ignore the xmlto error

# enjoy it
sudo ./stap testsuite/systemtap.examples/network/tcpdumplike.stp
person wenjianhn    schedule 26.09.2013