Hi Sephen,
Thank you for your help.  I made good progress up to now.

When I try to use the dpdk_simple_mp application to send a message to my 
application I get a Segmentation fault.

First, I re-verified the dpdk_simple_mp process=primary and dpdk_simple_mp 
process-secondary does pass messages successfully.  So, my hugepages are 
created and DPDK initializes successfully on both at startup.

In my application I created the send and recv rings and message_pool as the 
primary process.  The logs I added do not show any errors.  
Once my application starts and settles I started the dpdk_simple_mp 
application: # ./dpdk-simple_mp_dbg -l 30-31 -n 4 --legacy-mem --proc-type 
secondary --

However, on the dpdk_simple_mp side do "send hello" and I then get a 
segmentation fault.
The debugger takes me deep within the dpdk libraries which I am not too 
familiar with.
The rte_ring_elem.h file function: rte_ring_dequeue_build_elem() is where I end 
up with segmentation fault.  I notice that the variables are optimized out, not 
sure why since I built the dpdk libraries with debug flag.

Here is the back trace and could you point me in the direction to look.  

# gdb dpdk-simple_mp /core/core.dpdk-simple_mp.241269
warning: Unexpected size of section `.reg-xstate/241269' in core file.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./dpdk-simple_mp -l 30-31 -n 4 --legacy-mem --proc-type 
secondary --'.
Program terminated with signal SIGSEGV, Segmentation fault.

warning: Unexpected size of section `.reg-xstate/241269' in core file.
#0  0x0000000000cf446a in bucket_dequeue ()
[Current thread is 1 (Thread 0x7f946f835c00 (LWP 241269))]
Missing separate debuginfos, use: dnf debuginfo-install 
elfutils-libelf-0.189-3.el9.x86_64 glibc-2.34-83.0.1.el9_3.7.x86_64 
libibverbs-46.0-1.el9.x86_64 libnl3-3.7.0-1.el9.x86_64 
libpcap-1.10.0-4.el9.x86_64 libzstd-1.5.1-2.el9.x86_64 
numactl-libs-2.0.16-1.el9.x86_64 openssl-libs-3.0.7-25.0.1.el9_3.x86_64 
zlib-1.2.11-40.el9.x86_64
(gdb) bt
#0  0x0000000000cf446a in bucket_dequeue ()
#1  0x00000000007ce77d in cmd_send_parsed ()
#2  0x0000000000aa5d96 in __cmdline_parse ()
#3  0x0000000000aa4d70 in cmdline_valid_buffer ()
#4  0x0000000000aa826b in rdline_char_in ()
#5  0x0000000000aa4e41 in cmdline_in ()
#6  0x0000000000aa4f60 in cmdline_interact ()
#7  0x00000000004fe47a in main.cold ()
#8  0x00007f946f03feb0 in __libc_start_call_main () from /lib64/libc.so.6
#9  0x00007f946f03ff60 in __libc_start_main_impl () from /lib64/libc.so.6
#10 0x00000000007ce605 in _start ()

Gdb - stepping through the code, gdb attached to dpdk_simple_mp_debug
(gdb)
0x0000000000cf42c5 in rte_ring_dequeue_bulk_elem (available=<optimized out>, 
n=<optimized out>, esize=<optimized out>,
    obj_table=<optimized out>, r=<optimized out>) at 
../lib/ring/rte_ring_elem.h:375
375     ../lib/ring/rte_ring_elem.h: No such file or directory.
(gdb) p r
$17 = <optimized out>
(gdb) p obj_table
$18 = <optimized out>
(gdb) p available
$19 = <optimized out>
(gdb) n

Thread 1 "dpdk-simple_mp_" received signal SIGSEGV, Segmentation fault.
bucket_dequeue_orphans (n_orphans=33, obj_table=0x14f09b5c0, bd=0x14f05aa80)
    at ../drivers/mempool/bucket/rte_mempool_bucket.c:191
191     ../drivers/mempool/bucket/rte_mempool_bucket.c: No such file or 
directory.
(gdb) bt
#0  bucket_dequeue_orphans (n_orphans=33, obj_table=0x14f09b5c0, bd=0x14f05aa80)
    at ../drivers/mempool/bucket/rte_mempool_bucket.c:191
#1  bucket_dequeue (mp=<optimized out>, obj_table=0x14f09b5c0, n=33) at 
../drivers/mempool/bucket/rte_mempool_bucket.c:289
#2  0x00000000007ce77d in rte_mempool_ops_dequeue_bulk (n=<optimized out>, 
obj_table=0x14f09b5c0, mp=0x14f05ed40)
    at ../lib/mempool/rte_mempool.h:793
#3  rte_mempool_do_generic_get (cache=0x14f09b580, n=1, 
obj_table=0x7fff8df066f0, mp=0x14f05ed40)
    at ../lib/mempool/rte_mempool.h:1570
#4  rte_mempool_generic_get (cache=0x14f09b580, n=1, obj_table=0x7fff8df066f0, 
mp=0x14f05ed40)
    at ../lib/mempool/rte_mempool.h:1649
#5  rte_mempool_get_bulk (n=1, obj_table=0x7fff8df066f0, mp=0x14f05ed40) at 
../lib/mempool/rte_mempool.h:1684
#6  rte_mempool_get (obj_p=0x7fff8df066f0, mp=0x14f05ed40) at 
../lib/mempool/rte_mempool.h:1710
#7  cmd_send_parsed (parsed_result=parsed_result@entry=0x7fff8df06790, 
cl=cl@entry=0x2f73220, data=data@entry=0x0)
    at ../examples/multi_process/simple_mp/mp_commands.c:18
#8  0x0000000000aa5d96 in __cmdline_parse (cl=cl@entry=0x2f73220, buf=0x2f73268 
"send hello\n",
    call_fn=call_fn@entry=true) at ../lib/cmdline/cmdline_parse.c:294
#9  0x0000000000aa5f1a in cmdline_parse (cl=cl@entry=0x2f73220, buf=<optimized 
out>) at ../lib/cmdline/cmdline_parse.c:302
#10 0x0000000000aa4d70 in cmdline_valid_buffer (rdl=<optimized out>, 
buf=<optimized out>, size=<optimized out>)
    at ../lib/cmdline/cmdline.c:24
#11 0x0000000000aa826b in rdline_char_in (rdl=rdl@entry=0x2f73230, c=<optimized 
out>)
    at ../lib/cmdline/cmdline_rdline.c:444
#12 0x0000000000aa4e41 in cmdline_in (size=<optimized out>, buf=<optimized 
out>, cl=<optimized out>)
    at ../lib/cmdline/cmdline.c:146
#13 cmdline_in (cl=0x2f73220, buf=0x7fff8df0c89f "\n\200", size=<optimized 
out>) at ../lib/cmdline/cmdline.c:135
#14 0x0000000000aa4f60 in cmdline_interact (cl=cl@entry=0x2f73220) at 
../lib/cmdline/cmdline.c:192
#15 0x00000000004fe47a in main (argc=<optimized out>, argv=<optimized out>)
    at ../examples/multi_process/simple_mp/main.c:122

Appreciate if you can help.

Thanks,
Ed

-----Original Message-----
From: Stephen Hemminger <step...@networkplumber.org> 
Sent: Wednesday, March 19, 2025 7:17 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 21:52:39 +0000
"Lombardo, Ed" <ed.lomba...@netscout.com> wrote:

> 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

The typical case is to make sure that primary and secondary are built with the 
same libraries.

Reply via email to