We are not using DPDK in that environment. How can I check whether we use 
userspace datapath?

Thanks
M.
________________________________
From: Ben Pfaff <[email protected]>
Sent: Wednesday, June 2, 2021 8:39 PM
To: Miroslav Kubiczek <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: [ovs-discuss] openvswitch-2.14.0 crashes

CYBER SECURITY WARNING: This email was sent from an external sender. Do not 
click links or open attachments unless you recognize the sender and know the 
content is safe.


On Mon, May 31, 2021 at 04:44:11PM +0000, Miroslav Kubiczek wrote:
> Hello,
> We observe a crash with certain packets (BGP UPDATE with 2096 bytes whereas 
> MTU was 1500):
>
> [Thread debugging using libthread_db enabled]
> Using host libthread_db library "/lib64/libthread_db.so.1".
> Core was generated by `ovs-vswitchd unix:/var/run/openvswitch/db.sock 
> -vconsole:emer -vsyslog:err -vfi'.
> Program terminated with signal 11, Segmentation fault.
> #0  dp_packet_set_size (v=572, b=0x0) at lib/dp-packet.h:578
> 578         b->mbuf.data_len = (uint16_t)v;  /* Current seg length. */
> Missing separate debuginfos, use: debuginfo-install 
> glibc-2.17-307.el7.1.x86_64 keyutils-libs-1.5.8-3.el7.x86_64 
> krb5-libs-1.15.1-46.el7.x86_64 libatomic-4.8.5-44.el7.x86_64 
> libcom_err-1.42.9-17.el7.x86_64 libevent-2.0.21-4.el7.x86_64 
> libgcc-4.8.5-39.el7.x86_64 libpcap-1.5.3-12.el7.x86_64 
> libselinux-2.5-15.el7.x86_64 libunwind-1.2-2.el7.x86_64 
> numactl-libs-2.0.12-5.el7.x86_64 openssl-libs-1.0.2k-19.el7.x86_64 
> pcre-8.32-17.el7.x86_64 python-libs-2.7.5-88.el7.x86_64 
> unbound-libs-1.6.6-3.el7.x86_64 zlib-1.2.7-18.el7.x86_64
> (gdb) backtrace
> #0  dp_packet_set_size (v=572, b=0x0) at lib/dp-packet.h:578
> #1  netdev_linux_batch_rxq_recv_sock (rx=rx@entry=0x20b1c90, mtu=<optimized 
> out>, batch=batch@entry=0x7ffcf27baee0) at lib/netdev-linux.c:1306

This looks something of a weird case overall, because it suggests that
you're using the userspace datapath but not DPDK network devices.  Is
that correct?

This crash appears to be here:

        if (mmsgs[i].msg_len > std_len) {
            /* Build a single linear TSO packet by prepending the data from
             * std_len buffer to the aux_buf. */
            pkt = rx->aux_bufs[i];
            dp_packet_set_size(pkt, mmsgs[i].msg_len - std_len);

Ending up passing a null 'pkt' to dp_packet_set_size() indicates that
somehow aux_bufs[i] didn't get initialized.  I don't see how that would
happen.

_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to