工作案例分析:/lib/liblzma.so.5: no version information available

问题描述

今天接到一个产品的反馈,问题是执行 dpdk 网卡绑定脚本时候会一直打印如下内容:

/usr/sbin/lspci:/lib/liblzma.so.5: no version information available (required by /lib64`/libkmod.so.2)

沟通确认这个问题是更新了我们的一个组件只有出现的问题,以前没得。

初步定位过程

单独执行 lspci 命令并没有打印,然后使用 strace 跟踪 dpdk 网卡绑定脚本确认是如下命令行执行的时候的打印:

/usr/sbin/lspci -vmmks 0000:02:00.2 

执行 strace /usr/sbin/lspci -vmmks 0000:02:00.2 跟踪 lspci 执行过程,获取到下面这些与 liblzma.so.5 有关的内容:

open("/lib/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200.\0\0\0\0\0\0"..., 832) = 832
.........
close(3)                                = 0

lspci 命令行在执行的时候会从 /lib/liblzma.so.5 elf 文件的信息,后面也没有看到其它与问题相关的操作,那么很明显应该是从这个 elf 文件中获取到的信息不对,或者说压根就获取不到任何信息。

nm 查看 liblzma.so.5 的符号信息,得到了如下输出:

nm /lib/liblzma.so.5
nm: /lib/liblzma.so.5: no symbols

这个输出让我觉得可能是这个库被 strip 掉了而缺少符号信息,于是找了个正常系统中的库,结果发现正常的系统中 liblzma.so.5 也没有符号,那看来应该不是这个问题。

搜索互联网

从晚上找到了如下链接:

What does the “no version information available” error from linux dynamic linker mean?

看这个链接里面的描述,我这里遇到的问题可能是库的版本不对,于是直接使用正常运行的环境中的库替换出问题环境中的库,替换之后问题得到了解决。

为什么更新了我们的组件引入了这个问题?

已经解决了这个问题后,还需要想想为什么更新了我们提供的组件后就引入了这个问题,查看组件的内容,发现它会更新系统中的 liblzma.so.5 文件,这就造成了问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值