Hello Olivier,

On Friday 24 March 2017 09:52 PM, Olivier Matz wrote:
[..]

I tried to pass the mempool autotest, and it issues a segfault.
I think the libraries are missing in rte.app.mk, so no handler is
registered.

I have been trying to simulate the segfault that you are referring to above. But, I think it should not be the case. If a mempool handler is not registered (as librte_mempool_ring was not included in mk/rte.app.mk, so, no "ring_mp_mc"), the caller would get error.

The mempool_autotest is reporting:

--->8--
RTE>>mempool_autotest
cannot allocate mp_nocache mempool
Test Failed
--->8--


Adding the following code in lib/librte_mempool/rte_mempool_ops.c
fixes the crash.

        ops = rte_mempool_get_ops(mp->ops_index);
+       if (ops == NULL || ops->alloc == NULL)
+               return -ENOTSUP;
        return ops->alloc(mp);

Can you tell me for which case did your code reach rte_mempool_ops_alloc() and segfault?

In my case, librte_mempool_ring and librte_mempool_stack are not added to mk/rte.app.mk and it is static compilation.


Now that drivers are not linked to the mempool library, it can
happen that there is no handler. Could you please add this patch in your
patchset?

Yes, once I can get this issue reproduced. Because I think there is one more place similar code should go (rte_mempool_ops_getcount). As per what I can see, this would only happen if rte_mempool_xmem_create is called and then directly alloc is called. That is not happening for mempool_autotest.

-
Shreyansh

Reply via email to