发现Linux kernel kselftest的一个Bug

环境:Ubutu 20.04, 使用 Linux内核5.19.0-rc3+。

kselftest是linux kernel自带的一个内核源码自测试模块。在源文件根目录下的 ./tools/testing/selftests/目录下:

kselftest_deps.sh是该自测试模块进行dependency check的一个脚本。在./tools/testing/selftests/目录下运行$./kselftest_deps.sh gcc alsa,输出如下:

$ ./kselftest_deps.sh gcc alsa
========================================================
Kselftest Dependency Check for [./kselftest_deps.sh gcc alsa] results...
========================================================
Checked tests defining LDLIBS dependencies
--------------------------------------------------------
Total tests with Dependencies:
5 Pass: 1 Fail: 4
--------------------------------------------------------
PASS: alsa/Makefile dependency check passed -lasound
--------------------------------------------------------
Targets passed build dependency check on system:
alsa
--------------------------------------------------------
FAIL: alsa/Makefile dependency check: $(shell
FAIL: alsa/Makefile dependency check: pkg-config
FAIL: alsa/Makefile dependency check: alsa
FAIL: alsa/Makefile dependency check: --libs)
--------------------------------------------------------
Targets failed build dependency check on system:
alsa
--------------------------------------------------------
Missing libraries system
$(shell alsa --libs) pkg-config
--------------------------------------------------------
========================================================

结果显示有4个失败,缺少库系统$(shell alsa --libs) pkg-config

打开 alsa/Makefile,可以看到引起报错的这几行:

LDLIBS += $(shell pkg-config alsa --libs)
ifeq ($(LDLIBS),)
LDLIBS += -lasound
endif

很明显,kselftest_deps.sh脚本无法识别$(shell pkg-config alsa --libs) 。开始我以为是缺少相关库的问题,在网上搜了一些答案,并安装了lasound对应的库。

$sudo apt-get install libasound2-dev

还是一样。因为pkg-config需要找到对应的.pc文件,我把/lib/x86_64-linux-gnu/pkgconfig/alsa.pc文件拷贝到alsa目录下,还是一样。

在alsa目录下,运行pkg-config,输出如下:

$ pkg-config alsa --libs
-lasound

说明这个语句本身是没有问题的。但是为什么 kselftest_deps.sh脚本无法识别呢?我把这个问题发到了stack overflow。一位经验丰富者在comment区提示我说kselftest_deps.sh期望仅仅在赋值VAR_LDLIBS的时候才用pkg-config,而alsa没有遵循这一点。而我查阅了kselftest_deps.sh文件并没有这个要求。

 我于是决定向Linux kernel community求助,找到我git clone的repo网址:

kernel/git/stable/linux-stable-rc.git - Linux Stable -rc releases

再进入tree->MAINTAINERS 目录,查找selftests/alsa

 底部这个SOUND -ALSA SELFTESTS即是对应的maintainers和其他相关联系人。我写了封邮件,主送Mark Brown, 抄送alsa-devel和linux-kselftest, 注意邮件要干净,纯文本,不要带任何附件或者html链接元素。很快就收到了回信,确认是个bug。Linux kernel community的人还是很勤奋的,上一次也是很快收到了回应。

好了,以上是发现和报告Linux kernel中bug的整个过程。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值