* [dpdk-dev] app/test: unit test problem with testing mbuf in forked child process
@ 2020-01-29 12:31 Slava Ovsiienko
2020-02-06 7:52 ` Olivier Matz
0 siblings, 1 reply; 2+ messages in thread
From: Slava Ovsiienko @ 2020-01-29 12:31 UTC (permalink / raw)
To: Slava Ovsiienko, dev
Cc: Matan Azrad, Raslan Darawsheh, Ori Kam, Shahaf Shuler,
olivier.matz, stephen, thomas
While working on the unit test for the mbuf with pinned external buffers I found that:
app/test/test_mbuf.c:
- test_failing_mbuf_sanity_check()
- verify_mbuf_check_panics(buf)
- fork()
- child process()
Does not work (either over regular mbufs, not pinned ones) in correct way.
The mbuf being tested is not mapped (in huge page) to child process and it always completes with seg fault.
The question - is this problem of my setup, or did we change the memory mapping model
and this unit test should be updated?
With best regards, Slava
> -----Original Message-----
> From: dev <dev-bounces@dpdk.org> On Behalf Of Viacheslav Ovsiienko
> Sent: Friday, January 24, 2020 22:25
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@mellanox.com>; Raslan Darawsheh
> <rasland@mellanox.com>; Ori Kam <orika@mellanox.com>; Shahaf Shuler
> <shahafs@mellanox.com>; olivier.matz@6wind.com;
> stephen@networkplumber.org; thomas@mellanox.net
> Subject: [dpdk-dev] [PATCH] app/test: add test for mbuf with pinned external
> buffer
>
> This patch adds unit test for the mbufs allocated from the special pool with
> pinned external data buffers.
>
> The pinned buffer mbufs are tested in the same way as regular ones with
> taking into account some specifics of cloning/attaching.
>
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> ---
> app/test/test_mbuf.c | 165
> ++++++++++++++++++++++++++++++++++++++++++++++-----
> 1 file changed, 150 insertions(+), 15 deletions(-)
>
> diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c index
> 61ecffc..ee2f2f0 100644
> --- a/app/test/test_mbuf.c
> +++ b/app/test/test_mbuf.c
> @@ -310,8 +310,17 @@
> return -1;
> }
>
> +static uint16_t
> +testclone_refcnt_read(struct rte_mbuf *m) {
> + return RTE_MBUF_HAS_PINNED_EXTBUF(m) ?
> + rte_mbuf_ext_refcnt_read(m->shinfo) :
> + rte_mbuf_refcnt_read(m);
> +}
> +
> static int
> -testclone_testupdate_testdetach(struct rte_mempool *pktmbuf_pool)
> +testclone_testupdate_testdetach(struct rte_mempool *pktmbuf_pool,
> + struct rte_mempool *clone_pool)
> {
> struct rte_mbuf *m = NULL;
> struct rte_mbuf *clone = NULL;
> @@ -331,7 +340,7 @@
> *data = MAGIC_DATA;
>
> /* clone the allocated mbuf */
> - clone = rte_pktmbuf_clone(m, pktmbuf_pool);
> + clone = rte_pktmbuf_clone(m, clone_pool);
> if (clone == NULL)
> GOTO_FAIL("cannot clone data\n");
>
> @@ -339,7 +348,7 @@
> if (*data != MAGIC_DATA)
> GOTO_FAIL("invalid data in clone\n");
>
> - if (rte_mbuf_refcnt_read(m) != 2)
> + if (testclone_refcnt_read(m) != 2)
> GOTO_FAIL("invalid refcnt in m\n");
>
> /* free the clone */
> @@ -358,7 +367,7 @@
> data = rte_pktmbuf_mtod(m->next, unaligned_uint32_t *);
> *data = MAGIC_DATA;
>
> - clone = rte_pktmbuf_clone(m, pktmbuf_pool);
> + clone = rte_pktmbuf_clone(m, clone_pool);
> if (clone == NULL)
> GOTO_FAIL("cannot clone data\n");
>
> @@ -370,15 +379,15 @@
> if (*data != MAGIC_DATA)
> GOTO_FAIL("invalid data in clone->next\n");
>
> - if (rte_mbuf_refcnt_read(m) != 2)
> + if (testclone_refcnt_read(m) != 2)
> GOTO_FAIL("invalid refcnt in m\n");
>
> - if (rte_mbuf_refcnt_read(m->next) != 2)
> + if (testclone_refcnt_read(m->next) != 2)
> GOTO_FAIL("invalid refcnt in m->next\n");
>
> /* try to clone the clone */
>
> - clone2 = rte_pktmbuf_clone(clone, pktmbuf_pool);
> + clone2 = rte_pktmbuf_clone(clone, clone_pool);
> if (clone2 == NULL)
> GOTO_FAIL("cannot clone the clone\n");
>
> @@ -390,10 +399,10 @@
> if (*data != MAGIC_DATA)
> GOTO_FAIL("invalid data in clone2->next\n");
>
> - if (rte_mbuf_refcnt_read(m) != 3)
> + if (testclone_refcnt_read(m) != 3)
> GOTO_FAIL("invalid refcnt in m\n");
>
> - if (rte_mbuf_refcnt_read(m->next) != 3)
> + if (testclone_refcnt_read(m->next) != 3)
> GOTO_FAIL("invalid refcnt in m->next\n");
>
> /* free mbuf */
> @@ -418,7 +427,8 @@
> }
>
> static int
> -test_pktmbuf_copy(struct rte_mempool *pktmbuf_pool)
> +test_pktmbuf_copy(struct rte_mempool *pktmbuf_pool,
> + struct rte_mempool *clone_pool)
> {
> struct rte_mbuf *m = NULL;
> struct rte_mbuf *copy = NULL;
> @@ -458,11 +468,14 @@
> copy = NULL;
>
> /* same test with a cloned mbuf */
> - clone = rte_pktmbuf_clone(m, pktmbuf_pool);
> + clone = rte_pktmbuf_clone(m, clone_pool);
> if (clone == NULL)
> GOTO_FAIL("cannot clone data\n");
>
> - if (!RTE_MBUF_CLONED(clone))
> + if ((!RTE_MBUF_HAS_PINNED_EXTBUF(m) &&
> + !RTE_MBUF_CLONED(clone)) ||
> + (RTE_MBUF_HAS_PINNED_EXTBUF(m) &&
> + !RTE_MBUF_HAS_EXTBUF(clone)))
> GOTO_FAIL("clone did not give a cloned mbuf\n");
>
> copy = rte_pktmbuf_copy(clone, pktmbuf_pool, 0, UINT32_MAX); @@
> -1199,10 +1212,11 @@
> buf = rte_pktmbuf_alloc(pktmbuf_pool);
> if (buf == NULL)
> return -1;
> + /*
> printf("Checking good mbuf initially\n");
> if (verify_mbuf_check_panics(buf) != -1)
> return -1;
> -
> + */
> printf("Now checking for error conditions\n");
>
> if (verify_mbuf_check_panics(NULL)) {
> @@ -2411,6 +2425,120 @@ struct test_case {
> return -1;
> }
>
> +/*
> + * Test the mbuf pool with pinned external data buffers
> + * - Allocate memory zone for external buffer
> + * - Create the mbuf pool with pinned external buffer
> + * - Check the created pool with relevant mbuf pool unit tests */
> +static int test_pktmbuf_ext_pinned_buffer(struct rte_mempool *std_pool)
> +{
> +
> + struct rte_pktmbuf_extmem ext_mem;
> + struct rte_mempool *pinned_pool = NULL;
> + const struct rte_memzone *mz = NULL;
> +
> + printf("Test mbuf pool with external pinned data buffers\n");
> +
> + /* Allocate memzone for the external data buffer */
> + mz = rte_memzone_reserve("pinned_pool",
> + NB_MBUF * MBUF_DATA_SIZE,
> + SOCKET_ID_ANY,
> + RTE_MEMZONE_2MB |
> RTE_MEMZONE_SIZE_HINT_ONLY);
> + if (mz == NULL)
> + GOTO_FAIL("%s: Memzone allocation failed\n", __func__);
> +
> + /* Create the mbuf pool with pinned external data buffer */
> + ext_mem.buf_ptr = mz->addr;
> + ext_mem.buf_iova = mz->iova;
> + ext_mem.buf_len = mz->len;
> + ext_mem.elt_size = MBUF_DATA_SIZE;
> +
> + pinned_pool = rte_pktmbuf_pool_create_extbuf("test_pinned_pool",
> + NB_MBUF, MEMPOOL_CACHE_SIZE, 0,
> + MBUF_DATA_SIZE, SOCKET_ID_ANY,
> + &ext_mem, 1);
> + if (pinned_pool == NULL)
> + GOTO_FAIL("%s: Mbuf pool with pinned external"
> + " buffer creation failed\n", __func__);
> + /* test multiple mbuf alloc */
> + if (test_pktmbuf_pool(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_mbuf_pool(pinned) failed\n",
> + __func__);
> +
> + /* do it another time to check that all mbufs were freed */
> + if (test_pktmbuf_pool(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_mbuf_pool(pinned) failed (2)\n",
> + __func__);
> +
> + /* test that the data pointer on a packet mbuf is set properly */
> + if (test_pktmbuf_pool_ptr(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_pktmbuf_pool_ptr(pinned) failed\n",
> + __func__);
> +
> + /* test data manipulation in mbuf with non-ascii data */
> + if (test_pktmbuf_with_non_ascii_data(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_pktmbuf_with_non_ascii_data(pinned)"
> + " failed\n", __func__);
> +
> + /* test free pktmbuf segment one by one */
> + if (test_pktmbuf_free_segment(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_pktmbuf_free_segment(pinned)
> failed\n",
> + __func__);
> +
> + if (testclone_testupdate_testdetach(pinned_pool, std_pool) < 0)
> + GOTO_FAIL("%s: testclone_and_testupdate(pinned) failed\n",
> + __func__);
> +
> + if (test_pktmbuf_copy(pinned_pool, std_pool) < 0)
> + GOTO_FAIL("%s: test_pktmbuf_copy(pinned) failed\n",
> + __func__);
> +
> + if (test_failing_mbuf_sanity_check(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_failing_mbuf_sanity_check(pinned)"
> + " failed\n", __func__);
> +
> + if (test_mbuf_linearize_check(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_mbuf_linearize_check(pinned) failed\n",
> + __func__);
> +
> + /* test for allocating a bulk of mbufs with various sizes */
> + if (test_pktmbuf_alloc_bulk(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_rte_pktmbuf_alloc_bulk(pinned)
> failed\n",
> + __func__);
> +
> + /* test for allocating a bulk of mbufs with various sizes */
> + if (test_neg_pktmbuf_alloc_bulk(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_neg_rte_pktmbuf_alloc_bulk(pinned)"
> + " failed\n", __func__);
> +
> + /* test to read mbuf packet */
> + if (test_pktmbuf_read(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_rte_pktmbuf_read(pinned) failed\n",
> + __func__);
> +
> + /* test to read mbuf packet from offset */
> + if (test_pktmbuf_read_from_offset(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_rte_pktmbuf_read_from_offset(pinned)"
> + " failed\n", __func__);
> +
> + /* test to read data from chain of mbufs with data segments */
> + if (test_pktmbuf_read_from_chain(pinned_pool) < 0)
> + GOTO_FAIL("%s: test_rte_pktmbuf_read_from_chain(pinned)"
> + " failed\n", __func__);
> +
> + RTE_SET_USED(std_pool);
> + rte_mempool_free(pinned_pool);
> + rte_memzone_free(mz);
> + return 0;
> +
> +fail:
> + rte_mempool_free(pinned_pool);
> + rte_memzone_free(mz);
> + return -1;
> +}
> +
> static int
> test_mbuf_dyn(struct rte_mempool *pktmbuf_pool) { @@ -2635,12
> +2763,12 @@ struct test_case {
> goto err;
> }
>
> - if (testclone_testupdate_testdetach(pktmbuf_pool) < 0) {
> + if (testclone_testupdate_testdetach(pktmbuf_pool, pktmbuf_pool) <
> 0) {
> printf("testclone_and_testupdate() failed \n");
> goto err;
> }
>
> - if (test_pktmbuf_copy(pktmbuf_pool) < 0) {
> + if (test_pktmbuf_copy(pktmbuf_pool, pktmbuf_pool) < 0) {
> printf("test_pktmbuf_copy() failed\n");
> goto err;
> }
> @@ -2731,6 +2859,13 @@ struct test_case {
> goto err;
> }
>
> + /* test the mbuf pool with pinned external data buffers */
> + if (test_pktmbuf_ext_pinned_buffer(pktmbuf_pool) < 0) {
> + printf("test_pktmbuf_ext_pinned_buffer() failed\n");
> + goto err;
> + }
> +
> +
> ret = 0;
> err:
> rte_mempool_free(pktmbuf_pool);
> --
> 1.8.3.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [dpdk-dev] app/test: unit test problem with testing mbuf in forked child process
2020-01-29 12:31 [dpdk-dev] app/test: unit test problem with testing mbuf in forked child process Slava Ovsiienko
@ 2020-02-06 7:52 ` Olivier Matz
0 siblings, 0 replies; 2+ messages in thread
From: Olivier Matz @ 2020-02-06 7:52 UTC (permalink / raw)
To: Slava Ovsiienko
Cc: dev, Matan Azrad, Raslan Darawsheh, Ori Kam, Shahaf Shuler,
stephen, thomas
Hi Slava,
On Wed, Jan 29, 2020 at 12:31:35PM +0000, Slava Ovsiienko wrote:
> While working on the unit test for the mbuf with pinned external buffers I found that:
> app/test/test_mbuf.c:
> - test_failing_mbuf_sanity_check()
> - verify_mbuf_check_panics(buf)
> - fork()
> - child process()
>
> Does not work (either over regular mbufs, not pinned ones) in correct way.
> The mbuf being tested is not mapped (in huge page) to child process and it always completes with seg fault.
> The question - is this problem of my setup, or did we change the memory mapping model
> and this unit test should be updated?
I tried to reproduce the issue, but in my case it looks it's working.
I added some prints in rte_mbuf_sanity_check() and rte_mbuf_check().
Here is the log on my platform:
# cat /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
512
# ./devtools/test-build.sh -s -v -j16 x86_64-native-linuxapp-gcc
[...]
# ./x86_64-native-linuxapp-gcc/app/test
EAL: Detected 24 lcore(s)
EAL: Detected 2 NUMA nodes
EAL: Multi-process socket /var/run/dpdk/rte/mp_socket
EAL: Selected IOVA mode 'PA'
EAL: No free hugepages reported in hugepages-2048kB
EAL: No available hugepages reported in hugepages-1048576kB
EAL: Probing VFIO support...
EAL: PCI device 0000:01:00.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:10a7 net_e1000_igb
EAL: PCI device 0000:01:00.1 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:10a7 net_e1000_igb
EAL: PCI device 0000:04:00.0 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:10fb net_ixgbe
EAL: PCI device 0000:04:00.1 on NUMA socket -1
EAL: Invalid NUMA socket, default to 0
EAL: probe driver: 8086:10fb net_ixgbe
APP: HPET is not enabled, using TSC as default timer
RTE>>mbuf_autotest
[...]
Now checking for error conditions
rte_mbuf_sanity_check((nil))
rte_mbuf_check((nil)):188
PANIC in rte_mbuf_sanity_check():
mbuf is NULL
13: [./x86_64-native-linuxapp-gcc/app/test(_start+0x2a) [0x555cc9791a1a]]
12: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7feb31e00b97]]
11: [./x86_64-native-linuxapp-gcc/app/test(main+0x3be) [0x555cc96d868e]]
10: [./x86_64-native-linuxapp-gcc/app/test(cmdline_interact+0x3b) [0x555cc9c07f9b]]
9: [./x86_64-native-linuxapp-gcc/app/test(+0x6299e0) [0x555cc9c079e0]]
8: [./x86_64-native-linuxapp-gcc/app/test(rdline_char_in+0x9d1) [0x555cc9c0b4a1]]
7: [./x86_64-native-linuxapp-gcc/app/test(+0x629ce0) [0x555cc9c07ce0]]
6: [./x86_64-native-linuxapp-gcc/app/test(cmdline_parse+0x328) [0x555cc9c08ce8]]
5: [./x86_64-native-linuxapp-gcc/app/test(+0x1b3b33) [0x555cc9791b33]]
4: [./x86_64-native-linuxapp-gcc/app/test(+0x24b12c) [0x555cc982912c]]
3: [./x86_64-native-linuxapp-gcc/app/test(rte_mbuf_sanity_check+0x130) [0x555cc9b72fa0]]
2: [./x86_64-native-linuxapp-gcc/app/test(__rte_panic+0xbd) [0x555cc96c8a62]]
1: [./x86_64-native-linuxapp-gcc/app/test(rte_dump_stack+0x2e) [0x555cc9be749e]]
rte_mbuf_sanity_check(0x7ffdf4c53f00)
rte_mbuf_check(0x7ffdf4c53f00):188
rte_mbuf_check(0x7ffdf4c53f00):194
PANIC in rte_mbuf_sanity_check():
bad mbuf pool
13: [./x86_64-native-linuxapp-gcc/app/test(_start+0x2a) [0x555cc9791a1a]]
12: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7feb31e00b97]]
11: [./x86_64-native-linuxapp-gcc/app/test(main+0x3be) [0x555cc96d868e]]
10: [./x86_64-native-linuxapp-gcc/app/test(cmdline_interact+0x3b) [0x555cc9c07f9b]]
9: [./x86_64-native-linuxapp-gcc/app/test(+0x6299e0) [0x555cc9c079e0]]
8: [./x86_64-native-linuxapp-gcc/app/test(rdline_char_in+0x9d1) [0x555cc9c0b4a1]]
7: [./x86_64-native-linuxapp-gcc/app/test(+0x629ce0) [0x555cc9c07ce0]]
6: [./x86_64-native-linuxapp-gcc/app/test(cmdline_parse+0x328) [0x555cc9c08ce8]]
5: [./x86_64-native-linuxapp-gcc/app/test(+0x1b3b33) [0x555cc9791b33]]
4: [./x86_64-native-linuxapp-gcc/app/test(+0x24b149) [0x555cc9829149]]
3: [./x86_64-native-linuxapp-gcc/app/test(rte_mbuf_sanity_check+0x130) [0x555cc9b72fa0]]
2: [./x86_64-native-linuxapp-gcc/app/test(__rte_panic+0xbd) [0x555cc96c8a62]]
1: [./x86_64-native-linuxapp-gcc/app/test(rte_dump_stack+0x2e) [0x555cc9be749e]]
rte_mbuf_sanity_check(0x7ffdf4c53f00)
rte_mbuf_check(0x7ffdf4c53f00):188
rte_mbuf_check(0x7ffdf4c53f00):194
PANIC in rte_mbuf_sanity_check():
bad IO addr
13: [./x86_64-native-linuxapp-gcc/app/test(_start+0x2a) [0x555cc9791a1a]]
12: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7feb31e00b97]]
11: [./x86_64-native-linuxapp-gcc/app/test(main+0x3be) [0x555cc96d868e]]
10: [./x86_64-native-linuxapp-gcc/app/test(cmdline_interact+0x3b) [0x555cc9c07f9b]]
9: [./x86_64-native-linuxapp-gcc/app/test(+0x6299e0) [0x555cc9c079e0]]
8: [./x86_64-native-linuxapp-gcc/app/test(rdline_char_in+0x9d1) [0x555cc9c0b4a1]]
7: [./x86_64-native-linuxapp-gcc/app/test(+0x629ce0) [0x555cc9c07ce0]]
6: [./x86_64-native-linuxapp-gcc/app/test(cmdline_parse+0x328) [0x555cc9c08ce8]]
5: [./x86_64-native-linuxapp-gcc/app/test(+0x1b3b33) [0x555cc9791b33]]
4: [./x86_64-native-linuxapp-gcc/app/test(+0x24b149) [0x555cc9829149]]
3: [./x86_64-native-linuxapp-gcc/app/test(rte_mbuf_sanity_check+0x130) [0x555cc9b72fa0]]
2: [./x86_64-native-linuxapp-gcc/app/test(__rte_panic+0xbd) [0x555cc96c8a62]]
1: [./x86_64-native-linuxapp-gcc/app/test(rte_dump_stack+0x2e) [0x555cc9be749e]]
rte_mbuf_sanity_check(0x7ffdf4c53f00)
rte_mbuf_check(0x7ffdf4c53f00):188
rte_mbuf_check(0x7ffdf4c53f00):194
PANIC in rte_mbuf_sanity_check():
bad virt addr
13: [./x86_64-native-linuxapp-gcc/app/test(_start+0x2a) [0x555cc9791a1a]]
12: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7feb31e00b97]]
11: [./x86_64-native-linuxapp-gcc/app/test(main+0x3be) [0x555cc96d868e]]
10: [./x86_64-native-linuxapp-gcc/app/test(cmdline_interact+0x3b) [0x555cc9c07f9b]]
9: [./x86_64-native-linuxapp-gcc/app/test(+0x6299e0) [0x555cc9c079e0]]
8: [./x86_64-native-linuxapp-gcc/app/test(rdline_char_in+0x9d1) [0x555cc9c0b4a1]]
7: [./x86_64-native-linuxapp-gcc/app/test(+0x629ce0) [0x555cc9c07ce0]]
6: [./x86_64-native-linuxapp-gcc/app/test(cmdline_parse+0x328) [0x555cc9c08ce8]]
5: [./x86_64-native-linuxapp-gcc/app/test(+0x1b3b33) [0x555cc9791b33]]
4: [./x86_64-native-linuxapp-gcc/app/test(+0x24b149) [0x555cc9829149]]
3: [./x86_64-native-linuxapp-gcc/app/test(rte_mbuf_sanity_check+0x130) [0x555cc9b72fa0]]
2: [./x86_64-native-linuxapp-gcc/app/test(__rte_panic+0xbd) [0x555cc96c8a62]]
1: [./x86_64-native-linuxapp-gcc/app/test(rte_dump_stack+0x2e) [0x555cc9be749e]]
rte_mbuf_sanity_check(0x7ffdf4c53f00)
rte_mbuf_check(0x7ffdf4c53f00):188
rte_mbuf_check(0x7ffdf4c53f00):194
rte_mbuf_check(0x7ffdf4c53f00):209
PANIC in rte_mbuf_sanity_check():
bad ref cnt
13: [./x86_64-native-linuxapp-gcc/app/test(_start+0x2a) [0x555cc9791a1a]]
12: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7feb31e00b97]]
11: [./x86_64-native-linuxapp-gcc/app/test(main+0x3be) [0x555cc96d868e]]
10: [./x86_64-native-linuxapp-gcc/app/test(cmdline_interact+0x3b) [0x555cc9c07f9b]]
9: [./x86_64-native-linuxapp-gcc/app/test(+0x6299e0) [0x555cc9c079e0]]
8: [./x86_64-native-linuxapp-gcc/app/test(rdline_char_in+0x9d1) [0x555cc9c0b4a1]]
7: [./x86_64-native-linuxapp-gcc/app/test(+0x629ce0) [0x555cc9c07ce0]]
6: [./x86_64-native-linuxapp-gcc/app/test(cmdline_parse+0x328) [0x555cc9c08ce8]]
5: [./x86_64-native-linuxapp-gcc/app/test(+0x1b3b33) [0x555cc9791b33]]
4: [./x86_64-native-linuxapp-gcc/app/test(+0x24b149) [0x555cc9829149]]
3: [./x86_64-native-linuxapp-gcc/app/test(rte_mbuf_sanity_check+0x130) [0x555cc9b72fa0]]
2: [./x86_64-native-linuxapp-gcc/app/test(__rte_panic+0xbd) [0x555cc96c8a62]]
1: [./x86_64-native-linuxapp-gcc/app/test(rte_dump_stack+0x2e) [0x555cc9be749e]]
rte_mbuf_sanity_check(0x7ffdf4c53f00)
rte_mbuf_check(0x7ffdf4c53f00):188
rte_mbuf_check(0x7ffdf4c53f00):194
rte_mbuf_check(0x7ffdf4c53f00):209
PANIC in rte_mbuf_sanity_check():
bad ref cnt
13: [./x86_64-native-linuxapp-gcc/app/test(_start+0x2a) [0x555cc9791a1a]]
12: [/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7) [0x7feb31e00b97]]
11: [./x86_64-native-linuxapp-gcc/app/test(main+0x3be) [0x555cc96d868e]]
10: [./x86_64-native-linuxapp-gcc/app/test(cmdline_interact+0x3b) [0x555cc9c07f9b]]
9: [./x86_64-native-linuxapp-gcc/app/test(+0x6299e0) [0x555cc9c079e0]]
8: [./x86_64-native-linuxapp-gcc/app/test(rdline_char_in+0x9d1) [0x555cc9c0b4a1]]
7: [./x86_64-native-linuxapp-gcc/app/test(+0x629ce0) [0x555cc9c07ce0]]
6: [./x86_64-native-linuxapp-gcc/app/test(cmdline_parse+0x328) [0x555cc9c08ce8]]
5: [./x86_64-native-linuxapp-gcc/app/test(+0x1b3b33) [0x555cc9791b33]]
4: [./x86_64-native-linuxapp-gcc/app/test(+0x24b149) [0x555cc9829149]]
3: [./x86_64-native-linuxapp-gcc/app/test(rte_mbuf_sanity_check+0x130) [0x555cc9b72fa0]]
2: [./x86_64-native-linuxapp-gcc/app/test(__rte_panic+0xbd) [0x555cc96c8a62]]
1: [./x86_64-native-linuxapp-gcc/app/test(rte_dump_stack+0x2e) [0x555cc9be749e]]
Can you give more details about how you start the test?
Thanks,
Olivier
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-02-06 7:52 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-29 12:31 [dpdk-dev] app/test: unit test problem with testing mbuf in forked child process Slava Ovsiienko
2020-02-06 7:52 ` 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).