(挑选本人之前发现的bug,可以更加深入讲解下问题分析历程)
对应补丁commit:9af831cdf6d2328e6f6fcd85dd1d5523fd8681d3
BUG发现
个人在学习linux或linux相关代码实践时,喜欢使用qemu启动虚拟机(启动快,方便替换内核)。
在刚开始接触ltp时候,便开始跨平台执行ltp(想看下ltp的兼容性),当时FAIL很多用例,然后逐个开始分析,直到utimensat_tests.sh,报错:” chattr: Inappropriate ioctl for device while reading flags on testfile”。
BUG分析
1.初步分析
使用过LTP的都知道,LTP的成功、提示或者失败都伴随着TPASS/TCONF/TFAIL,但是” chattr: Inappropriate ioctl for device while reading flags on testfile”错误前面并没有LTP内置的提示信息标记,所以首次看到就感觉是一个异常情况,用例中未发现的异常情况。
2.问题复现&定位
对于shell脚本的定位方法,最好的办法就是sh –x command方式。
1)首先cd到testcases/bin目录下,直接sh utimensat_tests.sh,这样是为了复现问题。可能会无法执行,原因是需要添加LTP_ROOT环境变量、将脚本中 . xxx.sh改成 . ./xxx.sh(小问题,你可以试着解决)。
2)然后 sh utimensat_tests.sh发现问题既然可以复现,则执sh –x utimensat_tests.sh &>log。 -x参数会将shell脚本的执行流程打印出来,包括中间变量赋值,执行日志导入log。
3)最后打开utimensat_tests.sh和log执行流程每行对比,即可找到报错位置所在(此时双屏更好哦)。
最终发现命令挂在 chattr –ai FILE这里( F I L E 这 里 ( FILE可以在出错位置添加echo $FILE打印出来)
复现步骤&