Dear Stephen, Thank you very much for your answer. Please see my answers inline. > Not sure what the tx and rx polling loops look like in your application. In short: they surely finish. In more details: - The receivers finish due to timeout. In my case the receiving threads finished OK. (Their CPU cores became idle.) - The sender threads check if sending happened within timeout time only AFTER all test frames were sent, that is, the sending loop finished. (It is done so to spare 1 branch instruction in the innermost sending loop.) So the sending loop is already finished when the rte_exit() is called. *My problem is that calling the rte_exit() function does not terminate the application.* > But they need to have some way of forcing exit, and you need to set that > flag before calling rte_exit(). > > See l2fwd and force_quit flag for an example. I have looked into its source code. I understand that it sets the "force_quit" flag when it receives a SIGINT or SIGTERM signal, and the nonzero value of the  "force_quit" flag causes to finish the while cycle of the "l2fwd_main_loop(void)". However, l2fwd also uses the "rte_exit()" function to terminate the program. The only difference is that it calls the "rte_exit()" function from the main program, and I do so in a thread started by the "rte_eal_remote_launch()" function. Is there any constraint for usage the "rte_eal_remote_launch()" function? (E.g., it may be called only from the main thread? I did not see anything like that int the documentation.) Best regards, Gábor