Hi everyone, I have a DPDK environment setup and the buggy part of my program concatenates a string. That string can be as long as it gets (lets say a 1,000,000 max characters). I run my program with *./program --lcores='0-4'*
I'm using DPDK's rte_malloc, rte_memcpy, rte_strlcat and rte_free functions. Below is a snippet of the code int current_length = strlen(fx->var);int new_length = (datalen + current_length) + 1; char *temp = (char *)rte_malloc("char *", new_length * (*fx->var), 0); rte_memcpy(temp, fx->var, current_length); rte_strlcat(temp, data, datalen); temp[new_length] = '\0'; fx->var = (char *)rte_malloc("var", new_length * (*fx->var), 0); rte_memcpy(fx->var, temp, new_length); fx->var[new_length] = '\0'; rte_free(temp); *My program exits after some time with EAL: eal_memalloc_alloc_seg_bulk(): couldn't find suitable memseg_list. * Following is the stack trace I'm getting (gdb) where#0 0x0000555555564d5b in _mm256_storeu_si256 (__A=..., __P=0x0) at /usr/lib/gcc/x86_64-linux-gnu/9/include/avxintrin.h:928#1 rte_mov32 ( src=0x1a80b5a80 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", dst=0x0) at /usr/local/include/rte_memcpy.h:320#2 rte_mov64 ( src=0x1a80b5a80 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", dst=0x0) at /usr/local/include/rte_memcpy.h:330#3 rte_memcpy_aligned (n=88, src=0x1a80b5a80, dst=0x0) at /usr/local/include/rte_memcpy.h:856#4 rte_memcpy (n=88, src=0x1a80b5a80, dst=0x0) at /usr/local/include/rte_memcpy.h:872#5 parse_something (flow=0x7ff7c83c8288, id=60806, data=0x7ff82cd77cc5 "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", datalen=89, flags=4) at main.c:1187#6 0x000055555557c2e1 in process_something (result=0x7fffed7fad88) at main.c:2147#7 0x000055555557c467 in some_flow (worker=0x7fffed7fad70, result=0x7fffed7fad88) at main.c:2199#8 0x000055555557e5e0 in some_loop (arg=0x5555556262f0) at main.c:2273 I need an idea of what's going wrong here, am I missing some EAL configurations. Until then I'm looking into the docs and trying to understand from DPDK programmer's guide (EAL, Mbuf, Mempool library in specific). Machine specs - DPDK 20.11.0-rc1 - Ubuntu 20 (x86_64 GNU/Linux kernel 5.8.0-44-generic) - CPU: 32 - RAM: 256GB - 2 DPDK ports(igb_uio) 6-7 GB/s - 1GB Hugepages Link to stackoverflow question: https://stackoverflow.com/questions/67038388/dpdk-throws-eal-eal-memalloc-alloc-seg-bulk-couldnt-find-suitable-memseg-li ) Regards, Ali Abid Zaidi