From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ig0-f170.google.com (mail-ig0-f170.google.com [209.85.213.170]) by dpdk.org (Postfix) with ESMTP id 0B26AC364 for ; Tue, 30 Jun 2015 17:49:33 +0200 (CEST) Received: by igblr2 with SMTP id lr2so78005302igb.0 for ; Tue, 30 Jun 2015 08:49:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=OfGIXz17WbaWNWhK99CHfEDP3F9uyQXv0GkxC94Fn1U=; b=UPCdu0wJKmlbb9CVDiLZbfShtBwCenIlAQa5rtj+IAQdbKBpPMEnDJw1C5BR4rhw77 Ye9XWH8rRFjq0psAMhTgz+wtkXK+Y1CN+6E3naU+qoiNDaEt1/xvg3/1tKz2GjP+++aX QRZyA1Zt9Jmzcsdwe++mzEX7PIuu8cPjf8y0O+qoANJRLOLNCxfAHCx3xEj2nfuwwUxx 2F7ov8BKrBLwWrcKk1ilL7Y4Xgb5HmJG7T6mL2zQBBG83G0dKL/Vw8qzIGSBi6JGolw5 DVJvWrKrW+Bf2EYC0Z6DV1Yk44QlrspBRx9eAbfZIFu9sX6gJsWB6CIqdGX02CV1mIZ4 ps7g== MIME-Version: 1.0 X-Received: by 10.50.61.130 with SMTP id p2mr26290888igr.9.1435679372344; Tue, 30 Jun 2015 08:49:32 -0700 (PDT) Received: by 10.36.194.129 with HTTP; Tue, 30 Jun 2015 08:49:32 -0700 (PDT) Date: Tue, 30 Jun 2015 08:49:32 -0700 Message-ID: From: Gopakumar Choorakkot Edakkunni To: dev@dpdk.org Content-Type: text/plain; charset=UTF-8 Subject: [dpdk-dev] dpdk-2.0.0: crash in ixgbe_recv_scattered_pkts_vec->_recv_raw_pkts_vec->desc_to_olflags_v X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Jun 2015 15:49:33 -0000 Hi, I am starting to tryout dpdk-2.0.0 with a simple Rx routine very similar to the l2fwd example - I am running this on a c3.8xlarge aws sr-iov enabled vpc instance (inside the vm it uses ixgbevf driver). Once in every 10 minutes my application crashes in the recieve path. And whenever I check the crash reason its because it always has three packets in the burst array (I have provided array size of 32) instead of the four that it tries to collect in one bunch. And inside desc_to_olflags_v(), theres the assumption that there are four packets, and obviously it crashes trying to access the fourth buffer. With a brief look at the code, I really cant make out how its guaranteed that we will always have four descriptors fully populated ? After the first iteration, the loop does break out if (likely(var != RTE_IXGBE_DESCS_PER_LOOP)), but how about the very first iteration where we might not have four ? Any thoughts will be helpful here, trying to get my app working for more than 10 minutes :) #0 0x00000000004c8c58 in desc_to_olflags_v (rx_pkts=0x7f1cb0ff17a0, descs=) at /home/gopa/dpdk-2.0.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:173 #1 _recv_raw_pkts_vec (rxq=0x7f1d364fcbc0, rx_pkts=, nb_pkts=, split_packet=0x7f1cb0ff16d0 "") at /home/gopa/dpdk-2.0.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:305 #2 0x00000000004c9cea in ixgbe_recv_scattered_pkts_vec (rx_queue=0x7f1d364fcbc0, rx_pkts=0x7f1cb0ff17a0, nb_pkts=) at /home/gopa/dpdk-2.0.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:475 #3 0x00000000006b9bd8 in rte_eth_rx_burst (port_id=0 '\000', queue_id=0, rx_pkts=0x7f1cb0ff17a0, nb_pkts=32) at /home/gopa/usr/dpdk/include/rte_ethdev.h:2417 --- (gdb) frame 0 #0 0x00000000004c8c58 in desc_to_olflags_v (rx_pkts=0x7f1cb0ff17a0, descs=) at /home/gopa/dpdk-2.0.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c:173 173 /home/gopa/dpdk-2.0.0/lib/librte_pmd_ixgbe/ixgbe_rxtx_vec.c: No such file or directory. (gdb) p rx_pkts[0] $9 = (struct rte_mbuf *) 0x7f1cf8284640 (gdb) p rx_pkts[1] $10 = (struct rte_mbuf *) 0x7f1d3991061c (gdb) p rx_pkts[2] $11 = (struct rte_mbuf *) 0x7f1d364fc740 (gdb) p rx_pkts[3] $12 = (struct rte_mbuf *) 0x0 (gdb)