2021-10-20 01:01 (UTC+0300), Dmitry Kozlyuk: > 2021-10-20 00:05 (UTC+0530), Harman Kalra: > [...] > > static unsigned > > check_hugepage_sz(unsigned flags, uint64_t hugepage_sz) > > { > > @@ -1328,6 +1330,7 @@ rte_eal_malloc_heap_init(void) > > { > > struct rte_mem_config *mcfg = rte_eal_get_configuration()->mem_config; > > unsigned int i; > > + int ret; > > const struct internal_config *internal_conf = > > eal_get_internal_configuration(); > > > > @@ -1369,5 +1372,16 @@ rte_eal_malloc_heap_init(void) > > return 0; > > A secondary process exits here... > > > /* add all IOVA-contiguous areas to the heap */ > > - return rte_memseg_contig_walk(malloc_add_seg, NULL); > > + ret = rte_memseg_contig_walk(malloc_add_seg, NULL); > > + > > + if (ret == 0) > > + malloc_ready = true; > > ...and never knows that malloc is ready. > But malloc is always ready for a secondary process.
That is, before returning 0 above for a secondary process malloc_ready should be set unconditionally.