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

Ubuntu22.04运行DPDK-19.11.14报RTE_RING tailq已注册panic

解决DPDK-19.11.14在Ubuntu22.04下运行ethtools/testpmd时的RTE_RING tailq初始化panic

问题描述

在Ubuntu 22.04上运行DPDK-19.11.14的ethtools示例或dpdk-testpmd时,触发如下panic:

EAL: Detected 4 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: RTE_RING tailq is already registered
PANIC in tailqinitfn_rte_ring_tailq():
Cannot initialize tailq: RTE_RING
...
Aborted (core dumped)

但helloworld示例可正常运行。

报错原因

核心问题是DPDK的librte_ring模块的tailq共享链表结构被重复初始化,常见触发场景:

  • 系统中残留了其他版本的DPDK动态库(比如从/usr/local/lib加载的librte_ring.so.20.0与当前19.11版本不兼容)
  • 编译DPDK或示例程序时混合使用了静态库(.a)和动态库(.so),导致librte_ring被多次链接加载
  • 之前安装的DPDK未完全清理,残留库干扰当前版本的初始化流程

修复步骤

1. 清理系统中残留的不兼容DPDK库

首先检查系统中已安装的DPDK库:

find /usr/local/lib -name "librte_*.so*"

如果发现版本不匹配的库(比如librte_ring.so.20.0,19.11版本对应的so版本应为librte_ring.so.19.11),删除这些残留文件并更新链接缓存:

sudo rm -f /usr/local/lib/x86_64-linux-gnu/librte_ring.so.20.0
sudo ldconfig

2. 重新编译DPDK,统一链接方式

进入DPDK源码目录,选择静态链接或动态链接其中一种方式重新编译安装,避免混合链接:

方式一:静态链接编译(推荐,避免动态库冲突)

make clean
meson setup build --default-library=static
ninja -C build
sudo ninja -C build install
sudo ldconfig

方式二:动态链接编译

make clean
meson setup build --default-library=shared
ninja -C build
sudo ninja -C build install
sudo ldconfig

如果使用老版本的Makefile构建(19.11也支持):

make clean
make config T=x86_64-native-linuxapp-gcc
make install T=x86_64-native-linuxapp-gcc DESTDIR=/usr/local/dpdk-19.11.14

然后设置环境变量,让程序优先加载指定版本的库:

export LD_LIBRARY_PATH=/usr/local/dpdk-19.11.14/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH

3. 重新编译并运行示例程序

进入ethtools示例目录重新编译:

cd examples/ethtool
make clean
make

运行时确保环境变量正确:

./dpdk-ethtool -l

4. 验证依赖库版本

用ldd检查dpdk-testpmd的依赖库是否为目标版本:

ldd /usr/local/bin/dpdk-testpmd | grep librte_ring

确认输出的是19.11版本的库路径,而非其他版本。

关于“静态链接转为动态库”的解释

你看到的方案本质是统一DPDK的编译链接方式:如果之前编译时混合了静态库(.a)和动态库(.so),会导致同一个模块(比如librte_ring)被多次加载初始化,触发tailq重复注册的panic。统一使用静态或动态链接,就能避免这种重复加载的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:50:27