From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id 32333A05D3 for ; Mon, 20 May 2019 11:03:44 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 80A975592; Mon, 20 May 2019 11:03:43 +0200 (CEST) Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by dpdk.org (Postfix) with ESMTP id 2C0A82BF3 for ; Mon, 20 May 2019 11:03:41 +0200 (CEST) X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 20 May 2019 02:03:41 -0700 X-ExtLoop1: 1 Received: from npg-dpdk-virtio-tbie-2.sh.intel.com (HELO ___) ([10.67.104.151]) by fmsmga001.fm.intel.com with ESMTP; 20 May 2019 02:03:40 -0700 Date: Mon, 20 May 2019 17:02:44 +0800 From: Tiwei Bie To: "Rao, Sanjay" Cc: "users@dpdk.org" Message-ID: <20190520090244.GA16837@___> References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) Subject: Re: [dpdk-users] Crash in virtio pmd - dpdk 18.11 X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org Sender: "users" Hi Sanjay, On Mon, May 20, 2019 at 04:30:33AM +0000, Rao, Sanjay wrote: > I upgraded to dodk 18.11 and still see the crash at the exact same place in the driver code. Greatly appreciate if somebody familiar with the code help me resolve this. Could you provide some steps about how to reproduce this crash? Thanks, Tiwei > > Thread 15 "lcore-slave-3" received signal SIGSEGV, Segmentation fault. > [Switching to Thread 0x7fffda1fc700 (LWP 5881)] > 0x00000000005b4889 in virtqueue_enqueue_xmit (txvq=0x17ffc3e00, cookie=0x17530be80, needed=1, use_indirect=0, can_push=1, in_order=0) > at /home/srao/github/athena-master/source/dpdk/drivers/net/virtio/virtio_rxtx.c:476 > 476 /home/srao/github/athena-master/source/dpdk/drivers/net/virtio/virtio_rxtx.c: No such file or directory. > (gdb) bt > #0 0x00000000005b4889 in virtqueue_enqueue_xmit (txvq=0x17ffc3e00, cookie=0x17530be80, needed=1, use_indirect=0, can_push=1, in_order=0) > at /home/srao/github/athena-master/source/dpdk/drivers/net/virtio/virtio_rxtx.c:476 > #1 0x00000000005b6e2d in virtio_xmit_pkts (tx_queue=0x17ffc3e00, tx_pkts=0x7fd0fcc0 , nb_pkts=25) > at /home/srao/github/athena-master/source/dpdk/drivers/net/virtio/virtio_rxtx.c:1423 > #2 0x00000000005fae28 in rte_eth_tx_burst (nb_pkts=, tx_pkts=0x7fd0fcc0 , queue_id=0, port_id=1) > at /home/srao/github/athena-master/output/RHEL-6/gcc492/mode1/dpdk/include/rte_ethdev.h:4158 > #3 send_burst (port=1 '\001', n=25, qconf=0x7fd0f980 ) at source/fanout/fastfanout/ffmain.c:559 > #4 worker_loop (lcore_id=) at source/fanout/fastfanout/ffmain.c:2922 > #5 0x00000000004c3255 in eal_thread_loop () > #6 0x00007ffff7782aa1 in start_thread () from /lib64/libpthread.so.0 > #7 0x00007ffff6b26bdd in clone () from /lib64/libc.so.6 > (gdb) p head_idx > $1 = 32768 > (gdb) p vq->vq_descx[idx] > $2 = {cookie = 0x0, ndescs = 0} > (gdb) p dxp->cookie > $3 = (void *) 0x0 > (gdb) p dxp > $4 = (struct vq_desc_extra *) 0x180043fa0 > (gdb) p *dxp > $5 = {cookie = 0x0, ndescs = 0} > (gdb) p cookie > $6 = (struct rte_mbuf *) 0x17530be80 > > > From: Rao Sanjay > Date: Monday, May 6, 2019 at 5:09 PM > To: "users@dpdk.org" > Subject: Crash in virtio pmd - dpdk 17.11.4 > > My apologies if this is already reported. I am seeing a crash in virtqueue_enqueue_xmit() function at line#291 in drivers/net/virtio_rxtx.c. This is in DPDK version 17.11.4 and happens under a sustained heavy traffic. > > static inline void > virtqueue_enqueue_xmit(struct virtnet_tx *txvq, struct rte_mbuf *cookie, > uint16_t needed, int use_indirect, int can_push) > { > struct virtio_tx_region *txr = txvq->virtio_net_hdr_mz->addr; > struct vq_desc_extra *dxp; > struct virtqueue *vq = txvq->vq; > struct vring_desc *start_dp; > uint16_t seg_num = cookie->nb_segs; > uint16_t head_idx, idx; > uint16_t head_size = vq->hw->vtnet_hdr_size; > struct virtio_net_hdr *hdr; > int offload; > > offload = tx_offload_enabled(vq->hw); > head_idx = vq->vq_desc_head_idx; > idx = head_idx; > dxp = &vq->vq_descx[idx]; <-- idx is VQ_RING_DESC_CHAIN_END > > --------- > } > > Can somebody familiar with this code let me know if there is any work around for this. > > Thanks > Sanjay > >