The EAL library does not wait (pthread_join) these threads so the should be detached so that library can release resources. This shows up when looking for memory leaks with tools like valgrind.
Signed-off-by: Stephen Hemminger <step...@networkplumber.org> --- lib/eal/freebsd/eal.c | 3 +++ lib/eal/linux/eal.c | 6 ++++++ lib/eal/linux/eal_interrupts.c | 3 +++ 3 files changed, 12 insertions(+) diff --git a/lib/eal/freebsd/eal.c b/lib/eal/freebsd/eal.c index 6cee5ae369db..039e5fba4bd4 100644 --- a/lib/eal/freebsd/eal.c +++ b/lib/eal/freebsd/eal.c @@ -899,6 +899,9 @@ rte_eal_init(int argc, char **argv) sizeof(rte_cpuset_t), &lcore_config[i].cpuset); if (ret != 0) rte_panic("Cannot set affinity\n"); + + /* worker threads are never joined */ + pthread_detach(lcore_config[i].thread_id); } /* diff --git a/lib/eal/linux/eal.c b/lib/eal/linux/eal.c index 3577eaeaa4f4..ad64557d453e 100644 --- a/lib/eal/linux/eal.c +++ b/lib/eal/linux/eal.c @@ -1267,6 +1267,12 @@ rte_eal_init(int argc, char **argv) sizeof(rte_cpuset_t), &lcore_config[i].cpuset); if (ret != 0) rte_panic("Cannot set affinity\n"); + + /* worker threads are never joined */ + ret = pthread_detach(lcore_config[i].thread_id); + if (ret != 0) + RTE_LOG(DEBUG, EAL, + "Cannot detach lcore thread\n"); } /* diff --git a/lib/eal/linux/eal_interrupts.c b/lib/eal/linux/eal_interrupts.c index 22b3b7bcd9a7..53a7bf5fbd4e 100644 --- a/lib/eal/linux/eal_interrupts.c +++ b/lib/eal/linux/eal_interrupts.c @@ -1175,6 +1175,9 @@ rte_eal_intr_init(void) "Failed to create thread for interrupt handling\n"); } + /* the interrupt thread is never joined */ + pthread_detach(intr_thread); + return ret; } -- 2.30.2