DPDK usage discussions
 help / color / mirror / Atom feed
* [dpdk-users] DPDK 16.7 with Intel i350 igb, panic, rte_mbuf_raw_alloc
@ 2016-08-26  8:24 martin_curran-gray
  2016-08-30  9:40 ` Olivier Matz
  0 siblings, 1 reply; 2+ messages in thread
From: martin_curran-gray @ 2016-08-26  8:24 UTC (permalink / raw)
  To: users; +Cc: martin_curran-gray

Hi,

Having got my X710/i40e working to some extent in 16.7 (moving from 2.2.0), I was doing some testing with i350, igb 

I seem to get a panic if I bring the link up while dpdk is running

I don't get this with my X710
I don't get this with the i350 with 2.2.0

It seems to happen both 
	if the link is up, I take it down, then bring it up  ( by issuing ifconfig eth# down etc on the other (non dpdk) end of the link)
or
	the link is down when dpdk start up, then I bring it up


had a look in the release notes for 16.04 and 16.07 but nothing is really springing out at me as something I have to change?


Run time shell output from my app

dpdk: Get Link Status port 0,  status is 1, speed is 1000, duplex is 1 mode is 1
dpdk: Get Link Status port 0,  status is 1, speed is 1000, duplex is 1 mode is 1
dpdk: Get Link Status port 0,  status is 1, speed is 1000, duplex is 1 mode is 1
dpdk: Get Link Status port 0,  status is 0, speed is 0, duplex is 0 mode is 1
dpdk: Get Link Status port 0,  status is 0, speed is 0, duplex is 0 mode is 1
dpdk: Get Link Status port 0,  status is 0, speed is 0, duplex is 0 mode is 1
dpdk: Get Link Status port 0,  status is 0, speed is 0, duplex is 0 mode is 1
dpdk: Get Link Status port 0,  status is 1, speed is 1000, duplex is 1 mode is 1
PANIC in rte_mbuf_raw_alloc():
line 1153       assert "rte_mbuf_refcnt_read(m) == 0" failed


gdb looking at the core

Program terminated with signal 6, Aborted.
#0  0x0000003488c328a5 in raise () from /lib64/libc.so.6
 (gdb) bt
#0  0x0000003488c328a5 in raise () from /lib64/libc.so.6
#1  0x0000003488c34085 in abort () from /lib64/libc.so.6
#2  0x00007fe927e9f527 in __rte_panic (funcname=<value optimized out>,
    format=0x7fe927ffe690 "line %d\tassert \"rte_mbuf_refcnt_read(m) == 0\" failed\n%.0s")
    at /root/xxxxxx/dpdk-16.07/lib/librte_eal/linuxapp/eal/eal_debug.c:86
#3  0x00007fe927f56e76 in rte_mbuf_raw_alloc (rx_queue=0x7fe8fa6caa00, rx_pkts=0x7fe8d65fc190,
    nb_pkts=32) at /root/xxxxxx/dpdk-16.07/x86_64-native-linuxapp-gcc/include/rte_mbuf.h:1153
#4  eth_igb_recv_pkts (rx_queue=0x7fe8fa6caa00, rx_pkts=0x7fe8d65fc190, nb_pkts=32)
    at /root/xxxxxx/dpdk-16.07/drivers/net/e1000/igb_rxtx.c:832
#5  0x00007fe927f1ebef in rte_eth_rx_burst () from /opt/EMRFeed/lib/libIssDPDKDriverInterface.so
#6  0x00007fe927f2e684 in dpdk_receive () from /opt/EMRFeed/lib/libIssDPDKDriverInterface.so
#7  0x00007fe927f3d023 in eal_thread_loop (arg=<value optimized out>)
    at /root/xxxxxx/dpdk-16.07/lib/librte_eal/linuxapp/eal/eal_thread.c:184
#8  0x0000003489007851 in start_thread () from /lib64/libpthread.so.0
#9  0x0000003488ce890d in clone () from /lib64/libc.so.6
(gdb)


Anyone come across this or know what I'm missing doing?

thanks

Martin Curran-Gray
HW/FPGA/SW Engineer

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-users] DPDK 16.7 with Intel i350 igb, panic, rte_mbuf_raw_alloc
  2016-08-26  8:24 [dpdk-users] DPDK 16.7 with Intel i350 igb, panic, rte_mbuf_raw_alloc martin_curran-gray
@ 2016-08-30  9:40 ` Olivier Matz
  0 siblings, 0 replies; 2+ messages in thread
From: Olivier Matz @ 2016-08-30  9:40 UTC (permalink / raw)
  To: Martin Curran-Gray, users

Hi Martin,

On 08/26/2016 10:24 AM, martin_curran-gray at keysight.com
(martin_curran-gray at keysight.com) wrote:
> Hi,
> 
> Having got my X710/i40e working to some extent in 16.7 (moving from 2.2.0), I was doing some testing with i350, igb 
> 
> I seem to get a panic if I bring the link up while dpdk is running
> 
> I don't get this with my X710
> I don't get this with the i350 with 2.2.0
> 
> It seems to happen both 
> 	if the link is up, I take it down, then bring it up  ( by issuing ifconfig eth# down etc on the other (non dpdk) end of the link)
> or
> 	the link is down when dpdk start up, then I bring it up
> 
> 
> had a look in the release notes for 16.04 and 16.07 but nothing is really springing out at me as something I have to change?
> 
> 
> Run time shell output from my app
> 
> dpdk: Get Link Status port 0,  status is 1, speed is 1000, duplex is 1 mode is 1
> dpdk: Get Link Status port 0,  status is 1, speed is 1000, duplex is 1 mode is 1
> dpdk: Get Link Status port 0,  status is 1, speed is 1000, duplex is 1 mode is 1
> dpdk: Get Link Status port 0,  status is 0, speed is 0, duplex is 0 mode is 1
> dpdk: Get Link Status port 0,  status is 0, speed is 0, duplex is 0 mode is 1
> dpdk: Get Link Status port 0,  status is 0, speed is 0, duplex is 0 mode is 1
> dpdk: Get Link Status port 0,  status is 0, speed is 0, duplex is 0 mode is 1
> dpdk: Get Link Status port 0,  status is 1, speed is 1000, duplex is 1 mode is 1
> PANIC in rte_mbuf_raw_alloc():
> line 1153       assert "rte_mbuf_refcnt_read(m) == 0" failed
> 
> 
> gdb looking at the core
> 
> Program terminated with signal 6, Aborted.
> #0  0x0000003488c328a5 in raise () from /lib64/libc.so.6
>  (gdb) bt
> #0  0x0000003488c328a5 in raise () from /lib64/libc.so.6
> #1  0x0000003488c34085 in abort () from /lib64/libc.so.6
> #2  0x00007fe927e9f527 in __rte_panic (funcname=<value optimized out>,
>     format=0x7fe927ffe690 "line %d\tassert \"rte_mbuf_refcnt_read(m) == 0\" failed\n%.0s")
>     at /root/xxxxxx/dpdk-16.07/lib/librte_eal/linuxapp/eal/eal_debug.c:86
> #3  0x00007fe927f56e76 in rte_mbuf_raw_alloc (rx_queue=0x7fe8fa6caa00, rx_pkts=0x7fe8d65fc190,
>     nb_pkts=32) at /root/xxxxxx/dpdk-16.07/x86_64-native-linuxapp-gcc/include/rte_mbuf.h:1153
> #4  eth_igb_recv_pkts (rx_queue=0x7fe8fa6caa00, rx_pkts=0x7fe8d65fc190, nb_pkts=32)
>     at /root/xxxxxx/dpdk-16.07/drivers/net/e1000/igb_rxtx.c:832
> #5  0x00007fe927f1ebef in rte_eth_rx_burst () from /opt/EMRFeed/lib/libIssDPDKDriverInterface.so
> #6  0x00007fe927f2e684 in dpdk_receive () from /opt/EMRFeed/lib/libIssDPDKDriverInterface.so
> #7  0x00007fe927f3d023 in eal_thread_loop (arg=<value optimized out>)
>     at /root/xxxxxx/dpdk-16.07/lib/librte_eal/linuxapp/eal/eal_thread.c:184
> #8  0x0000003489007851 in start_thread () from /lib64/libpthread.so.0
> #9  0x0000003488ce890d in clone () from /lib64/libc.so.6
> (gdb)
> 
> 
> Anyone come across this or know what I'm missing doing?
> 

It looks you are running your application with mbuf debugging enabled.
This checks that the mbuf refcount is 0 when allocating it from the
pool. This refcount is normally set to 0 before putting it back into the
pool in rte_pktmbuf_free() or rte_pktmbuf_free_seg().

The functions __rte_mbuf_raw_free() or rte_mempool_put*() don't set it,
so maybe your application calls one of these functions to free a mbuf,
without setting back the refcount to 0. If that's the case, prefer using
rte_pktmbuf_free() or rte_pktmbuf_free_seg().

This has been discussed here:
http://dpdk.org/ml/archives/dev/2016-June/040558.html

This (not so well documented) behavior may change in 16.11.

Regards,
Olivier

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2016-08-30  9:41 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-26  8:24 [dpdk-users] DPDK 16.7 with Intel i350 igb, panic, rte_mbuf_raw_alloc martin_curran-gray
2016-08-30  9:40 ` Olivier Matz

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).