发现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 kselftest的一个Bug_第1张图片

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

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

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

发现Linux kernel kselftest的一个Bug_第2张图片

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

发现Linux kernel kselftest的一个Bug_第3张图片

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

你可能感兴趣的:(Linux,linux,bug,模块测试)