[ovs-discuss] openvswitch-2.14.0 crashes

Miroslav Kubiczek Miroslav.Kubiczek at adaptivemobile.com
Thu Jun 3 12:56:50 UTC 2021


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

Thanks
M.
________________________________
From: Ben Pfaff <blp at ovn.org>
Sent: Wednesday, June 2, 2021 8:39 PM
To: Miroslav Kubiczek <Miroslav.Kubiczek at adaptivemobile.com>
Cc: bugs at openvswitch.org <bugs at openvswitch.org>
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 at entry=0x20b1c90, mtu=<optimized out>, batch=batch at 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.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openvswitch.org/pipermail/ovs-discuss/attachments/20210603/1cf3a747/attachment.html>


More information about the discuss mailing list