On Fri, Mar 17, 2017 at 03:46:53AM +0000, Dey, Souvik wrote:
> Hi ,
>               I am trying to do rte_pktmbuf_alloc from a mempool within a 
> secondary process after doing a rte_mempool_lookup for the same mempool. But 
> the rte_pktmbuf_alloc crashes with the below backtrace

I believe it's yet another "accessing a local process pointer in a shared
memory" issue in the multiple process model. Here is a similar issue I have
just fixed for virtio pmd in last release.

    commit 6d890f8ab51295045a53f41c4d2654bb1f01cf38
    Author: Yuanhan Liu <yuanhan....@linux.intel.com>
    Date:   Fri Jan 6 18:16:19 2017 +0800
    
        net/virtio: fix multiple process support
    

        --yliu
> 
> #0  0x0000000000000000 in ?? ()
> #1  0x0000000000423da2 in rte_mempool_ops_dequeue_bulk (n=1, 
> obj_table=0x7fffffffd8e0, mp=0x7fe910fbd540) at 
> /sonus/p4/ws/sodey/cmn_thirdparty.cloud_dev_5_1/Intel/DPDK/dist
> #2  __mempool_generic_get (flags=<optimized out>, cache=<optimized out>, 
> n=<optimized out>, obj_table=<optimized out>, mp=<optimized out>)
>     at 
> /sonus/p4/ws/sodey/cmn_thirdparty.cloud_dev_5_1/Intel/DPDK/distrib_upd/x86_64-native-linuxapp-gcc/include/rte_mempool.h:1296
> #3  rte_mempool_generic_get (flags=<optimized out>, cache=<optimized out>, 
> n=<optimized out>, obj_table=<optimized out>, mp=<optimized out>)
>     at 
> /sonus/p4/ws/sodey/cmn_thirdparty.cloud_dev_5_1/Intel/DPDK/distrib_upd/x86_64-native-linuxapp-gcc/include/rte_mempool.h:1334
> #4  rte_mempool_get_bulk (n=1, obj_table=0x7fffffffd8e0, mp=0x7fe910fbd540) 
> at 
> /sonus/p4/ws/sodey/cmn_thirdparty.cloud_dev_5_1/Intel/DPDK/distrib_upd/x86_64-native-linuxapp
> #5  rte_mempool_get (obj_p=0x7fffffffd8e0, mp=0x7fe910fbd540) at 
> /sonus/p4/ws/sodey/cmn_thirdparty.cloud_dev_5_1/Intel/DPDK/distrib_upd/x86_64-native-linuxapp-gcc/include/r
> #6  rte_mbuf_raw_alloc (mp=0x7fe910fbd540) at 
> /sonus/p4/ws/sodey/cmn_thirdparty.cloud_dev_5_1/Intel/DPDK/distrib_upd/x86_64-native-linuxapp-gcc/include/rte_mbuf.h:761
> #7  rte_pktmbuf_alloc (mp=0x7fe910fbd540) at 
> /sonus/p4/ws/sodey/cmn_thirdparty.cloud_dev_5_1/Intel/DPDK/distrib_upd/x86_64-native-linuxapp-gcc/include/rte_mbuf.h:1046
> 
> >From the trace it looks like that the ops->dequeue is failing as the ops is 
> >not set properly.
> In the primary process I have done a rte_mempool_create with the flags passed 
> as 0 (indicating mp_mc option). This should have taken care of setting the 
> ops properly. Also the rte_pktmbuf_alloc calls in the primary does not give 
> any issues.
> Both the primary and secondary DPDK app code was working fine with 2.1 DPDK, 
> but now when I am trying to link to the newer DPDK versions like 16.07/16.11, 
> it is crashing. There is no changes done in the app code.
> I do see that the complete rte_mempool code has been changed between 2.1 to 
> 16.07 but could not  find any obvious reasons of the crash. Is my usage wrong 
> or do we need to pass any new flag to make this work.
> 
> Did anyone faced similar issue or any help in this will be great for my 
> debugging. Thanks in advance for the help.
> 
> --
> Regards,
> Souvik

Reply via email to