Hi Stephen, I added the fib library, but I now see there are many more dpdk libraries I need to add. Is this typically the case with the example files working with primary DPDK application?
I am using meson and ninja to build the examples, but I don't know how to know the library dependencies. How do I learn ahead of building my Application as to what extra libraries I need to include for the DPDK example to work? I am doing incremental build-test-find_missing_library. So far, I needed to add these: -lrte_fib -lrte_rib -lrte_stack -lrte_member -lrte_efd Thanks, Ed -----Original Message----- From: Stephen Hemminger <step...@networkplumber.org> Sent: Wednesday, March 19, 2025 4:24 PM To: Lombardo, Ed <ed.lomba...@netscout.com> Cc: users@dpdk.org Subject: Re: tailqs issue External Email: This message originated outside of NETSCOUT. Do not click links or open attachments unless you recognize the sender and know the content is safe. On Wed, 19 Mar 2025 17:50:46 +0000 "Lombardo, Ed" <ed.lomba...@netscout.com> wrote: > Hi, > My goal is to test DPDK applications running on the same server as a primary > process and secondary process. > When I execute two dpdk-simple-mp processes, one as primary and other as > secondary, I see them both startup with no issues. > > # ./dpdk-simple_mp -c 0x2 -n 4 --legacy-mem --proc-type primary -- # > ./dpdk-simple_mp -c 0x8 -n 4 --legacy-mem --proc-type secondary -- > > > Now when I test our DPDK application (as primary) and same dpdk-simple-mp (as > secondary) I get error "EAL: Cannot initialize tailq: RTE_FIB). > EAL args: MyApp, -l 25,26,27,28 -n 4 -socket-mem=2048, > --legacy-mem -no-telemetry -proc_type=primary > > # ./dpdk-simple_mp -l 24 -n 4 --legacy-mem --proc-type > secondary -- > > > When I use gdb I see that t->head is 0x0 in eal_common_tailqs.c Line 148. > (gdb) p *t > $40 = {head = 0x0, next = {tqe_next = 0x1c68c40 <rte_fib6_tailq>, tqe_prev = > 0x1c67108 <rte_swx_ctl_pipeline_tailq+8>}, > name = "RTE_FIB", '\000' <repeats 24 times>} > > I created 2 - 1G hugepages per CPU socket for each test case listed above. > > [root@localhost ~]# /opt/dpdk/dpdk-hugepages.py -s Node Pages Size > Total > 0 2 1Gb 2Gb > 1 2 1Gb 2Gb > > > The dpdk-simple_mp execution output is shown below: > [root@localhost ~]# ./dpdk-simple_mp -l 24 -n 4 --legacy-mem > --huge-dir /dev/mnt/huge --proc-type secondary -- > EAL: Detected CPU lcores: 128 > EAL: Detected NUMA nodes: 2 > EAL: Static memory layout is selected, amount of reserved memory can > be adjusted with -m or --socket-mem > EAL: Detected static linkage of DPDK > EAL: Multi-process socket > /var/run/dpdk/rte/mp_socket_18349_8160ff395b1 > EAL: Selected IOVA mode 'PA' > EAL: WARNING: Address Space Layout Randomization (ASLR) is enabled in the > kernel. > EAL: This may cause issues with mapping memory into secondary processes > EAL: Cannot initialize tailq: RTE_FIB > Tailq 0: qname:<RTE_DIST_BURST>, tqh_first:(nil), tqh_last:0x100004490 > Tailq 1: qname:<RTE_DISTRIBUTOR>, tqh_first:(nil), > tqh_last:0x1000044c0 Tailq 2: qname:<RTE_REORDER>, tqh_first:(nil), > tqh_last:0x1000044f0 Tailq 3: qname:<RTE_IPSEC_SAD>, tqh_first:(nil), > tqh_last:0x100004520 Tailq 4: qname:<RTE_SWX_IPSEC>, tqh_first:(nil), > tqh_last:0x100004550 Tailq 5: qname:<RTE_SWX_PIPELINE>, > tqh_first:(nil), tqh_last:0x100004580 Tailq 6: > qname:<RTE_SWX_CTL_PIPELINE>, tqh_first:(nil), tqh_last:0x1000045b0 > Tailq 7: qname:<RTE_HASH>, tqh_first:0x1bfd9f140, tqh_last:0x1bf6f4240 > Tailq 8: qname:<RTE_FBK_HASH>, tqh_first:(nil), tqh_last:0x100004610 > Tailq 9: qname:<RTE_THASH>, tqh_first:(nil), tqh_last:0x100004640 > Tailq 10: qname:<RTE_LPM>, tqh_first:(nil), tqh_last:0x100004670 Tailq > 11: qname:<RTE_LPM6>, tqh_first:(nil), tqh_last:0x1000046a0 Tailq 12: > qname:<RTE_ACL>, tqh_first:(nil), tqh_last:0x1000046d0 Tailq 13: > qname:<RTE_MEMPOOL>, tqh_first:0x1bf282000, tqh_last:0x1bf282000 Tailq > 14: qname:<RTE_RING>, tqh_first:0x1bfdc79c0, tqh_last:0x14f261ac0 > Tailq 15: qname:<RTE_MBUF_DYNFIELD>, tqh_first:0x14f871680, > tqh_last:0x14f870cc0 Tailq 16: qname:<RTE_MBUF_DYNFLAG>, > tqh_first:0x14f871080, tqh_last:0x14f871080 Tailq 17: > qname:<UIO_RESOURCE_LIST>, tqh_first:0x1bfffce00, tqh_last:0x1bf939e40 > Tailq 18: qname:<VFIO_RESOURCE_LIST>, tqh_first:(nil), > tqh_last:0x1000047f0 Tailq 19: qname:<>, tqh_first:(nil), > tqh_last:(nil) Tailq 20: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 21: qname:<>, tqh_first:(nil), tqh_last:(nil) Tailq 22: > qname:<>, tqh_first:(nil), tqh_last:(nil) Tailq 23: qname:<>, > tqh_first:(nil), tqh_last:(nil) Tailq 24: qname:<>, tqh_first:(nil), > tqh_last:(nil) Tailq 25: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 26: qname:<>, tqh_first:(nil), tqh_last:(nil) Tailq 27: > qname:<>, tqh_first:(nil), tqh_last:(nil) Tailq 28: qname:<>, > tqh_first:(nil), tqh_last:(nil) Tailq 29: qname:<>, tqh_first:(nil), > tqh_last:(nil) Tailq 30: qname:<>, tqh_first:(nil), tqh_last:(nil) > Tailq 31: qname:<>, tqh_first:(nil), tqh_last:(nil) > EAL: Cannot init tail queues for objects > EAL: Error - exiting with code: 1 > Cannot init EAL > > How do I resolve this issue? > > Thanks, > Ed The problem is that the primary process has not linked in the fib library. The primary process is the only one that can register tailq's at initialization.