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