Hi matan and Slava:

I observed dpdk coredump when I used mlx5 NIC send packets in secondary process:

 

Thread 6 received signal SIGSEGV, Segmentation fault.
[Switching to LWP 593263]
0x00007ffff7f5b44e in rte_eth_tx_burst (port_id=0, queue_id=3, tx_pkts=0x7fffefff7f28, nb_pkts=1)
at /usr/local/include/rte_ethdev.h:5777
5777 qd = p->txq.data[queue_id];
(gdb) bt
#0 0x00007ffff7f5b44e in rte_eth_tx_burst (port_id=0, queue_id=3, tx_pkts=0x7fffefff7f28, nb_pkts=1)
at /usr/local/include/rte_ethdev.h:5777
#1 0x00007ffff7f5ed7a in vdev_tx_xmit (stack=0x7fffe8000b20, pkts=0x7fffefff7f28, nr_pkts=1) at netif/lstack_vdev.c:142
#2 0x00007ffff7f4bd77 in eth_dev_output (netif=0x7fffe8002528, pbuf=0x0) at netif/lstack_ethdev.c:876
#3 0x00007ffff7e84ab8 in etharp_raw (netif=0x7fffe8002528, ethsrc_addr=0x7fffe8002564,
ethdst_addr=0x7ffff7f775da <ethbroadcast>, hwsrc_addr=0x7fffe8002564, ipsrc_addr=0x7fffe8002530,
hwdst_addr=0x7ffff7f775d4 <ethzero>, ipdst_addr=0x7fffe8002530, opcode=1) at core/ipv4/etharp.c:1179
#4 0x00007ffff7e84ec8 in etharp_request_dst (hw_dst_addr=<optimized out>, ipaddr=<optimized out>, netif=<optimized out>)
at core/ipv4/etharp.c:1206
#5 etharp_request (netif=<optimized out>, ipaddr=<optimized out>) at core/ipv4/etharp.c:1224

(gdb) p *p
$1 = {rx_pkt_burst = 0x7ffff63288c0 <mlx5_rx_burst_vec>, rx_queue_count = 0x0,
rx_descriptor_status = 0x7ffff61709d0 <mlx5_rx_descriptor_status>, rxq = {data = 0x0,
clbk = 0x7ffff6e515a8 <rte_eth_devices+104>}, reserved1 = {0, 0, 0}, tx_pkt_burst = 0x7ffff623ba60 <mlx5_tx_burst_none>,
tx_pkt_prepare = 0x0, tx_descriptor_status = 0x7ffff618a870 <mlx5_tx_descriptor_status>, txq = {data = 0x0,
clbk = 0x7ffff6e535a8 <rte_eth_devices+8296>}, reserved2 = {0, 0, 0}}
(gdb) p p->txq.data
$2 = (void **) 0x0
(gdb)

 

 

P->txq.data is NULL

 

I used dpdk-21.11. (https://github.com/DPDK/dpdk/tree/v22.11), I looked up the stable branch, and there doesn't seem to be a relevant bugfix patch.

The same app does not have this coredump on i40e/ixgbe NIC.

 

 

Thanks