You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DOCA Switch应用执行query entry时触发段错误求助

环境信息
  • 硬件:BlueField-2,型号MBF2H516A-CEEOT
  • 操作系统:Linux version 5.15.0-1060-bluefield (buildd@bos03-arm64-114)
  • DOCA SDK:2.10.0087
问题详情

我按照官方文档运行doca_switch示例应用,执行命令./doca_switch -- -p 03:00.0 -r vf[0-1] -l 60成功启动程序后,在CLI中执行第一组命令,运行query entry_id=3415432416174012788时触发了segmentation fault(段错误)。

用gdb调试后发现,崩溃发生在/opt/mellanox/doca/lib/aarch64-linux-gnu/libdoca_flow.so.2的doca_flow_resource_query_entry()函数内。该函数的stats参数有效可读,entry有有效内存地址,但推测崩溃可能是因为entry内部存在NULL或未初始化的字段。

尝试配置更完整的第二组命令后,依然在同一个函数触发段错误。gdb显示actions未初始化,但monitor参数已成功关联条目。

咨询问题
  1. 该段错误是否由命令使用不当导致?
  2. 或是libdoca_flow.so库存在bug?
  3. 如何进一步排查或解决此问题?
解答

1. 命令使用不当的可能性排查

  • 先确认entry_id的合法性:必须是通过add命令创建条目后返回的有效ID,若使用随机或错误的ID,会导致库内部访问无效内存。
  • 检查CLI命令语法:确保query的参数格式完全符合官方文档要求,比如entry_id的拼写、参数间的空格是否合规。
  • 验证VF配置:启动命令中-r vf[0-1]指定的VF需正确配置并绑定到DPU,未初始化的VF可能引发后续资源查询异常。

2. 库bug的可能性判断

从调试信息看,entry指针有效但内部字段(如actions)未初始化,存在两种可能:

  • doca_switch示例应用在创建条目时,未完全初始化entry结构体的所有字段,导致调用查询函数时库访问未初始化内存。
  • libdoca_flow.so本身对部分初始化的entry结构体未做NULL校验或边界检查,直接访问字段引发段错误。

可通过以下方式验证:

  • 升级到DOCA SDK最新稳定版,若问题消失则大概率是旧版本库的bug。
  • 查看Mellanox官方发布说明,确认2.10.0087版本是否存在doca_flow_resource_query_entry()相关的已知问题。

3. 进一步排查与解决方法

  • 添加调试日志:修改doca_switch代码,打印entry结构体关键字段(如actions、monitor指针)在创建和查询前的状态,确认是否未初始化。
  • 手动构造合法entry:若能修改示例代码,手动初始化entry的所有必填字段后再调用查询函数,验证是否仍崩溃。
  • 提交官方支持:若确认不是命令使用问题且升级SDK无效,将gdb完整回溯信息(bt full输出)、命令执行流程、环境信息提交给Mellanox官方技术支持,协助定位bug。
  • 检查资源限制:用doca_flow_resource_query()查询DPU流表资源使用情况,资源耗尽可能导致条目创建不完全,引发查询异常。

内容的提问来源于stack exchange,提问作者user24906747

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 23:16:10