323
京東網上商城
Linux問題情報分享(3):CentOS 7上最新kernel-debuginfo包與內核不匹配導致SystemTap腳本運行失敗
CentOS 7上最新的kernel-debuginfo包,是kernel-debuginfo-4.x.x-x.el7,而當前內核是kernel-3.10.0。因此,如果安裝或者升級到了最新的kernel-debuginfo包,會導致類似SystemTap這樣的工具無法找到內核頭文件和調試符號,因而執行出錯。這是CentOS 7的bug。
SystemTap報錯大致如下
[root@pusf ~]# rpm -qa | grep kernel-debuginfo
kernel-debuginfo-4.9.31-203.el7.centos.x86_64
kernel-debuginfo-common-x86_64-4.9.31-203.el7.centos.x86_64
[root@pusf ~]# stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'
Pass 1: parsed user script and 119 library scripts using 117224virt/33688res/3120shr/30824data kb, in 240usr/10sys/292real ms.
semantic error: while resolving probe point: identifier 'kernel' at /usr/share/systemtap/tapset/linux/vfs.stp:882:18
source: probe vfs.read = kernel.function("vfs_read")
^
semantic error: missing x86_64 kernel/module debuginfo [man warning::debuginfo] under '/lib/modules/3.10.0-514.26.2.el7.x86_64/build'
semantic error: while resolving probe point: identifier 'vfs' at <input>:1:7
source: probe vfs.read {printf("read performed\n"); exit()}
^
semantic error: no match
Pass 2: analyzed script: 0 probes, 0 functions, 0 embeds, 0 globals using 120568virt/37092res/5108shr/32068data kb, in 100usr/140sys/443real ms.
Missing separate debuginfos, use: debuginfo-install kernel-3.10.0-514.26.2.el7.x86_64
Pass 2: analysis failed. [man error::pass2]
[root@pusf ~]#
因此,出現這種情況時,需要卸載kernel-debuginfo-4.x.x-x.el7和kernel-debuginfo-common-4.x.x-x.el7的包,重新按照當前內核版本安裝kernel-debuginfo即可
rpm -qa | grep -E '^kernel-' | grep -v 3.10.0 | xargs yum -y remove
debuginfo-install -y kernel-$(uname -r)
再測試下SystemTap的腳本,會發現問題已經解決了
[root@pusf ~]# rpm -qa | grep kernel-debuginfo
kernel-debuginfo-common-x86_64-3.10.0-514.26.2.el7.x86_64
kernel-debuginfo-3.10.0-514.26.2.el7.x86_64
[root@pusf ~]# stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}'
Pass 1: parsed user script and 119 library scripts using 117224virt/33684res/3120shr/30824data kb, in 230usr/10sys/293real ms.
Pass 2: analyzed script: 1 probe, 1 function, 4 embeds, 0 globals using 248216virt/165932res/4336shr/161816data kb, in 1260usr/370sys/1809real ms.
Pass 3: translated to C into "/tmp/stapI5iwL4/stap_1aa47f863c3f13e51da3e80cc92942be_1682_src.c" using 248216virt/166236res/4640shr/161816data kb, in 20usr/40sys/57real ms.
Pass 4: compiled C into "stap_1aa47f863c3f13e51da3e80cc92942be_1682.ko" in 5550usr/1240sys/7187real ms.
Pass 5: starting run.
read performed
Pass 5: run completed in 0usr/60sys/378real ms.
[root@pusf ~]#
參考
最後更新:2017-08-21 15:02:19
上一篇:
Google的排名優化需要注意哪些方麵的細節?
下一篇:
Kafka、RabbitMQ、RocketMQ 消息中間件的對比 | 消息發送性能篇
《Hadoop與大數據挖掘》一2.5 K-Means算法原理及Hadoop MapReduce實現
Apache與Tomcat 區別聯係
Mysql存儲過程中使用cursor
使用 HttpWebRequest 向網站提交數據
機房收費係統之思想性總結
MySQL如何對主從數據不一致的情況進行校驗並繼續同步
【直播係列之三】揭秘阿裏雲直播產品功能
IIS目錄禁止執行權限
解決:/home/catia/android-sdks/platform-tools/aapt: error while loading shared libraries: libz.so.1: c
WCF技術剖析之一:通過一個ASP.NET程序模擬WCF基礎架構