Dear dpdk experts. Im having a recurrent segmentation fault under the function ixgbe_tx_free_bufs (ixgbe_rxtx.c:150) (i enable -g3 -O0).
Surfing the core dump i find out this: txep = &(txq->sw_ring[txq->tx_next_dd - (txq->tx_rs_thresh - 1)]); txq->tx_next_dd = 31 txq->txq->tx_rs_thresh=32 Obviosly txep points out to the first element but *(txep).mbuf == INVALID MBUF ADDRESS The same applies to *(txep+1).mbuf ; *(txep +2).mbuf;*(txep+3).mbuf from *(txep+4) .mbuf to *(txep+31).mbuf seems to be valid because im able to derefence the mbuf's Note: I disable CONFIG_RTE_IXGBE_INC_VECTOR because i gets similiar behavior , I thought the problem would disappear disabling that feature. the program always runs well up to 4 or 5 hours and then crash ... always in the same line. this is the backtrace of the program: #0 0x0000000000677a64 in rte_atomic16_read (v=0x47dc14c18b14) at /opt/dpdk-2.0.0/x86_64-native-linuxapp-gcc/include/generic/rte_atomic.h:151 #1 0x0000000000677c1d in rte_mbuf_refcnt_read (m=0x47dc14c18b00) at /opt/dpdk-2.0.0/x86_64-native-linuxapp-gcc/include/rte_mbuf.h:411 #2 0x000000000067a13c in __rte_pktmbuf_prefree_seg (m=0x47dc14c18b00) at /opt/dpdk-2.0.0/x86_64-native-linuxapp-gcc/include/rte_mbuf.h:778 #3 rte_pktmbuf_free_seg (m=0x47dc14c18b00) at /opt/dpdk-2.0.0/x86_64-native-linuxapp-gcc/include/rte_mbuf.h:810 #4 ixgbe_tx_free_bufs (txq=0x7ffb40ae52c0) at /opt/dpdk-2.0.0/lib/librte_pmd_ixgbe/ixgbe_rxtx.c:150 #5 tx_xmit_pkts (tx_queue=0x7ffb40ae52c0, tx_pkts=0x64534770 <app+290608>, nb_pkts=32) at /opt/dpdk-2.0.0/lib/librte_pmd_ixgbe/ixgbe_rxtx.c:256 #6 0x000000000067c6f3 in ixgbe_xmit_pkts_simple (tx_queue=0x7ffb40ae52c0, tx_pkts=0x64534570 <app+290096>, nb_pkts=80) at /opt/dpdk-2.0.0/lib/librte_pmd_ixgbe/ixgbe_rxtx.c:343 #7 0x00000000004ec93d in rte_eth_tx_burst (port_id=1 '\001', queue_id=0, tx_pkts=0x64534570 <app+290096>, nb_pkts=144) at /opt/dpdk-2.0.0/x86_64-native-linuxapp-gcc/include/rte_ethdev.h:2572 frame 5 tx queue: print *txq {tx_ring = 0x7ffd9d3f1880, tx_ring_phys_addr = 79947569280, sw_ring = 0x7ffb40ae1280, tdt_reg_addr = 0x7fff0002a018, nb_tx_desc = 1024, tx_tail = 1008, tx_free_thresh = 32, tx_rs_thresh = 32, nb_tx_used = 0, last_desc_cleaned = 1023, nb_tx_free = 15, tx_next_dd = 31, tx_next_rs = 1023, queue_id = 0, reg_idx = 0, port_id = 1 '\001', pthresh = 32 ' ', hthresh = 0 '\000', wthresh = 0 '\000', txq_flags = 3841, ctx_curr = 0, ctx_cache = {{ flags = 0, tx_offload = {data = 0, {l2_len = 0, l3_len = 0, l4_len = 0, tso_segsz = 0, vlan_tci = 0}}, tx_offload_mask = {data = 0, {l2_len = 0, l3_len = 0, l4_len = 0, tso_segsz = 0, vlan_tci = 0}}}, {flags = 0, tx_offload = { data = 0, {l2_len = 0, l3_len = 0, l4_len = 0, tso_segsz = 0, vlan_tci = 0}}, tx_offload_mask = {data = 0, {l2_len = 0, l3_len = 0, l4_len = 0, tso_segsz = 0, vlan_tci = 0}}}}, ops = 0x7616d0 <def_txq_ops>, tx_deferred_start = 0 '\000'} Please help me !!! Regards. Ariel Rodriguez.