When running unit tests in DPDK mode, TestDpdkMultiThread and TestDpdkDeviceWorkerThreads fail.
When running Pcap++Test in DPDK mode, I encountered two DPDK-related unit tests failing. According to the logs, the TestDpdkMultiThread test failed during the call to openMultiQueues, while the TestDpdkDeviceWorkerThreads test reported “Number of cores in core mask different from workerThreadsVec size”.
[root@localhost Pcap++Test]# ./Bin/Pcap++Test -i 127.0.0.1 -t dpdk -d 0
Disabling memory leak check in MSVC Release builds due to caching logic in stream objects that looks like a memory leak:
https://github.com/cpputest/cpputest/issues/786#issuecomment-148921958
Skipping memory leak check for all test cases
PcapPlusPlus version: v25.05+ (non-official release)
Built: Oct 20 2025 17:02:21
Git info: Git branch 'master', commit '0ae53899'
Using ip: 127.0.0.1
Debug mode: off
Using DPDK port: 0
DPDK KNI tests: skipped
Start running tests...
EAL: Detected CPU lcores: 64
EAL: Detected NUMA nodes: 2
EAL: Detected shared linkage of DPDK
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'VA'
EAL: VFIO support initialized
EAL: DPDK is running on a NUMA system, but is compiled without NUMA support.
EAL: This will have adverse consequences for performance and usability.
EAL: Please use --legacy-mem option, or recompile with NUMA support.
EAL: Using IOMMU type 1 (Type 1)
EAL: Ignore mapping IO port bar(2)
EAL: Probe PCI driver: net_ixgbe (8086:10fb) device: 0000:18:00.0 (socket 0)
TELEMETRY: No legacy callbacks, legacy socket not created
TestDpdkInitDevice : PASSED
TestDpdkDevice : PASSED
TestDpdkMultiThread : FAILED (/root/PcapPlusPlus/Tests/Pcap++Test/Tests/DpdkTests.cpp:405). Assert FALSE failed:
[dev->openMultiQueues(numOfRxQueuesToOpen + 1, 1)]
TestDpdkDeviceSendPackets : PASSED
[ERROR: /root/PcapPlusPlus/Pcap++/src/DpdkDeviceList.cpp: startDpdkWorkerThreads:381] Number of cores in core mask different from workerThreadsVec size
TestDpdkDeviceWorkerThreads : FAILED (/root/PcapPlusPlus/Tests/Pcap++Test/Tests/DpdkTests.cpp:774). Assert TRUE failed:
[pcpp::DpdkDeviceList::getInstance().startDpdkWorkerThreads(workerThreadCoreMask, workerThreadVec)]
[ERROR: /root/PcapPlusPlus/Pcap++/src/MBufRawPacket.cpp: reallocateData:315] Cannot reallocate mBuf raw packet to a size larger than mBuf data. mBuf max length: 0; requested length: 140
[ERROR: /root/PcapPlusPlus/Packet++/src/Packet.cpp: reallocateRawData:217] Couldn't reallocate data of raw packet to 140 bytes
TestDpdkMbufRawPacket : PASSED
NOT ALL TESTS PASSED!!
Test cases: 97, Passed: 4, Failed: 2, Skipped: 91
[root@localhost Pcap++Test]#
[root@localhost Pcap++Test]# dpdk-devbind.py --status-dev net
Network devices using DPDK-compatible driver
============================================
0000:18:00.0 '82599 10 Gigabit Dual Port Network Connection 10fb' drv=vfio-pci unused=ixgbe,igb_uio
I will continue to follow up, but it may be sporadic.
@gyl30 isn't it related to this? 🤔
@seladb The same issue we are discussing here now.
@gyl30 so this is related to the fact that we don't support more than 32 cores, correct? The fix we decided on is to limit the tests to 32 cores, until we increase the core limit
@seladb Yes, in the current implementation we have not restricted the core. This is precisely what we need to address.
@seladb
I discovered that DPDK unit tests also fail on a 16-core machine. I've opened a new issue. Once we pass all unit tests on systems with fewer than 32 cores, we'll attempt to resolve this issue.#2010
I discovered that DPDK unit tests also fail on a 16-core machine. I've opened a new issue. Once we pass all unit tests on systems with fewer than 32 cores, we'll attempt to resolve this issue.#2010
Thanks @gyl30 ! I'll need your help to debug these issues because I don't have a machine with 16 cores...