DPDK interface : Tx_burst crash in pci_uio_ioport_write (TCP Packet)

DPDK interface : Tx_burst crash in pci_uio_ioport_write (TCP Packet)


Here is the stack trace for the core that is generated when we try to send a TCP packet. 


#0  0x0000000000d38fc5 in outw_p (__value=1, __port=49392) at /usr/include/x86_64-linux-gnu/sys/io.h:118

118      __asm__ __volatile__ ("outw %w0,%w1\noutb %%al,$0x80": :"a" (__value),

[Current thread is 1 (Thread 0x7f06f1a2c700 (LWP 10342))]

(gdb) bt

#0  0x0000000000d38fc5 in outw_p (__value=1, __port=49392) at /usr/include/x86_64-linux-gnu/sys/io.h:118

#1  0x0000000000d3a395 in pci_uio_ioport_write (p=0x7f05e1fcfc08, data=0x7f05e1e02494, len=2, offset=16)

    at ../../src/dpdk/lib/librte_eal/linuxapp/eal/eal_pci_uio.c:559

#2  0x0000000000d38e13 in rte_eal_pci_ioport_write (p=0x7f05e1fcfc08, data=0x7f05e1e02494, len=2, offset=16)

    at ../../src/dpdk/lib/librte_eal/linuxapp/eal/eal_pci.c:693

#3  0x0000000000cd30bc in legacy_notify_queue (hw=0x7f05e1fcfc00, vq=0x7f05e1e02440)

    at ../../src/dpdk/drivers/net/virtio/virtio_pci.c:258

#4  0x0000000000ce0151 in virtqueue_notify (vq=0x7f05e1e02440) at ../../src/dpdk/drivers/net/virtio/virtqueue.h:326

#5  0x0000000000ce22f6 in virtio_xmit_pkts (tx_queue=0x7f05e1e034c0, tx_pkts=0x7f06f1a2ba58, nb_pkts=1)

    at ../../src/dpdk/drivers/net/virtio/virtio_rxtx.c:976

#6  0x0000000000778210 in rte_eth_tx_burst (port_id=0 '\000', queue_id=0, tx_pkts=0x7f06f1a2ba58, nb_pkts=1)

    at ../../src/dpdk/lib/librte_ether/rte_ethdev.h:2835



The ARP and DHCP packets go through tx and rx_burst just fine without any issues. But the TCP packet tx_burst is crashing with the above trace. 


Does something need to be enabled/configured to support TCP?

3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi Sunil,

Here is some info that you can give us that will help me help you:

  1. What are you doing to initialize DPDK? Can you include your DPDK command line options?
  2. Which DPDK version are you using?
  3. What NIC and CPU are you running with?
  4. Does the error occur in a VM or on a host machine?


\\"Perhaps travel cannot prevent bigotry, but by demonstrating that all peoples cry, laugh, eat, worry, and die, it can introduce the idea that if we try and understand each other, we may even become friends.\\" Maya Angelou


I am facing the similar problem as above, where the dpdk application is crashing with the below stack.

#0  0x00007f11eb0b4a89 in waitpid () from /lib64/libc.so.6
#1  0x00007f11eb032de2 in do_system () from /lib64/libc.so.6
#2  0x00007f11eb033191 in system () from /lib64/libc.so.6
#3  0x00007f11ece316d4 in sighdl_handler () from /opt/SMAW/INTP/lib64/libsignalhandler.so
#4  <signal handler called>
#5  0x00007f11f0b2ed7c in pci_uio_ioport_write () from /usr/local/lean-disp/libdpdk.so
#6  0x00007f11f0a4009d in virtio_xmit_pkts () from /usr/local/lean-disp/libdpdk.so
#7  0x00007f11f09ed346 in dpdk_send_burst () from /usr/local/lean-disp/libdpdk.so
#8  0x00007f11f09ed79a in dpdk_send_packet () from /usr/local/lean-disp/libdpdk.so

The DPDK command line options used are ./leanlb -c8 -n1 -w 0000:00:05.0 -w 0000:00:04.0

We are using dpdk version dpdk-16.07.

The error is seen on the VM only.

All the packets are send and received without any problem. This crash is observed only in few attempts when the non EAL thread is trying to send a garp packet outside.

Is this something to do with a non-EAL thread trying to send a packet.

Leave a Comment

Please sign in to add a comment. Not a member? Join today