openeuler-riscv / oerv-team

OERV 实习生工作中心
8 stars 39 forks source link

[mugen_LLVM_2409]处理mugen测试套 systemtap 失败的测试用例 #1108

Open jiewu9823 opened 1 month ago

jiewu9823 commented 1 month ago

需求:

  1. LLVM24.09_mugen失败测试用例清单 中找到测试套 systemtap 失败的测试用例
  2. openEuler LLVM 平行宇宙 24.09 版本的镜像上 double check mugen 中 systemtap 测试套里的测试用例
  3. 定位失败的原因,并做出相应的处理: 如果确认是 riscv 架构的问题,向 openeuler/RISC-V 里提交 issue,issue的标题以 [LLVM平行宇宙24.09] 开头 如果是 mugen 测试用例的问题,修复测试用例后,向 mugen 上游提交 PR,提交 PR 时要贴上在 riscv 和 x86(24.03 LTS版本) 两个架构的上测试结果

要求:

  1. 该项任务要求产出:

    • 在openEuler LLVM平行宇宙 24.09 版本镜像上 double check 的结果,即完成需求2(必选,限制1天内完成)
    • 定位失败的原因,并做出相应的处理,即完成需求3(可选,对应薪资折半,限制2天内完成),如果无法完成,请在本 issue 的评论里说明情况,未完成的任务将重新设置为issue挂出。如果完成了该项任务,请在本 issue 评论里说明完成的情况
  2. 完成该项任务后,请在 LLVM24.09_mugen失败测试用例清单 里找到相应测试套和测试用例栏位,并填写Owner(填写中文名),Github ID,复测结果,Failure Reason,Issue/PR URL(填写提交issue或者PR的url) 。

说明:

  1. mugen 源码以及使用方法:https://gitee.com/openeuler/mugen
hehellooedas commented 1 month ago

测试结果

在openEuler24.03 x86_64上测试: 图片

在openEuler24.09 riscv64 llvm上测试: 图片

结果相同,都是oe_test_service_stap-server和oe_test_service_stap-exporter出错

原因分析

oe_test_service_stap-exporter测试脚本

图片 出错地方在这里

经过多次、反复的测试,可以直观地看见以下现象: 于是可以做一个对比实验: 在openEuler24.09 x86_64有systemtap-client的情况下测试: 图片

在openEuler24.09 x86_64无systemtap-client的情况下测试: 图片

在openEuler24.09 riscv64 llvm有systemtap-client的情况下测试: 图片

在openEuler24.09 riscv64 llvm无systemtap-client的情况下测试: 图片

总结:在systemtap-client已安装的情况下进行测试就会出错,remove掉就可以通过。但是如果只是remove掉则无法测试systemtap-exporter是否正常运行。


图片 经过一段时间的对比,发现在已安装systemtap-client的情况下会报出绿色箭头指向的错误。

日志里说明/lib/modules/6.6.0-41.0.0.51.oe2409.x86_64/build/.config这个文件不存在,实际上build目录就不存在,这是因为缺少了内核开发包kernel-devel.

图片

安装好内核开发包后在日志中发现了这个错误,就是stap命令是没有的,而stap命令恰好是放在了systemtap-client软件包里。原先的测试脚本没有安装systemtap-client,这个包必须安装!


图片 接下来要解决的是构建失败问题,主要问题是缺少头文件 runtime_defines.h 和 sym.h,这是缺少了内核调试信息包。我们需要安装kernel-debuginfo. 此外,还有一点我们必须要注意到:那就是kernel-devel内核开发包和kernel-debuginfo内核调试包,它必须安装的是当前启动的内核的版本,如果当前内核(uname -r)和kernel-devel与kernel-debuginfo版本不一致,那么仍然会构建错误!在执行完dnf install命令之后还需要做一个判断,kernel-devel和kernel-debuginfo的版本需要和当前启动的kernel版本对齐,不一致则退出。据观察,还需要同版本的kernel-headers内核头。并且构建的时候需要gcc编译器。 gitee issue 据社区描述,通过编译还需要systemtap-devel开发包。


结果

经过修改后的结果如下: 在openEuler24.03 x86_64上测试: 通过。

在openEuler24.09 x86_64上测试: 输入图片说明 通过。

在openEuler24.03 riscv64上测试: 输入图片说明 通过。

在openEuler24.09 riscv64上测试: 输入图片说明 通过。

hehellooedas commented 1 month ago

https://gitee.com/openeuler/mugen/pulls/3698