Removing "datapath_type=netdev" from the bridge seems to have fixed the issue.
Thanks for help. ________________________________ 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
