Skip to contentSkip to conversation

rte_exit will hang if called from worker or service thread

Bug 1290 [email protected] 1 participant 1 message Sep 18, 2023

lore
Share & tools
lore
#0 lore raw

https://bugs.dpdk.org/show_bug.cgi?id=1290

            Bug ID: 1290
           Summary: rte_exit will hang if called from worker or service
                    thread
           Product: DPDK
           Version: 23.07
          Hardware: All
                OS: All
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: core
          Assignee: [email protected]
          Reporter: [email protected]

Target Milestone: ---

Calling rte_exit in a thread other than main thread won't work because the cleanup code is calling rte_eal_cleanup, and inside that it ends up waiting for all workers. Since the thread you are calling from is a worker, it ends up waiting for itself.

rte_exit()

        rte_eal_cleanup()
                rte_service_finalize()
                        rte_eal_mp_wait_lcore()

void
rte_eal_mp_wait_lcore(void)

{
        unsigned lcore_id;

        RTE_LCORE_FOREACH_WORKER(lcore_id) {
                rte_eal_wait_lcore(lcore_id);
        }
}

Either service handling needs to be smarter, the rte_exit() function check if it is called from main lcore, and/or documentation needs update. Not a simple fix because in order to safely do the cleanup logic all threads have to gone to a quiescent state.

Signature · 2 lines
You are receiving this mail because:
You are the assignee for the bug.