Thread (42 messages) 42 messages, 12 authors, 2023-07-05

Re: [dpdk-dev] [PATCH v4 2/5] examples/multi_process: cleanup bus objects while terminating app

From: oulijun <hidden>
Date: 2021-01-25 11:07:21


在 2020/10/18 17:25, David Marchand 写道:
On Thu, Oct 8, 2020 at 5:31 PM [off-list ref] wrote:
quoted
From: Rohit Raj <redacted>

Certain bus objects may need to be closed and re-acquired
while terminating and rerunning the client application.
Hence a signal handler is required to catch the termination
of the App and hence closing the bus objects.

This patch adds the missing signal handler in the client
app and closes the Bus objects in both client and server
applications when the signal Handler is called.

Signed-off-by: Rohit Raj <redacted>
---
  .../multi_process/client_server_mp/mp_client/client.c | 11 +++++++++++
  .../multi_process/client_server_mp/mp_server/main.c   |  4 +++-
  2 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/examples/multi_process/client_server_mp/mp_client/client.c b/examples/multi_process/client_server_mp/mp_client/client.c
index 361d90b54..c37516b4c 100644
--- a/examples/multi_process/client_server_mp/mp_client/client.c
+++ b/examples/multi_process/client_server_mp/mp_client/client.c
@@ -11,6 +11,7 @@
  #include <stdlib.h>
  #include <getopt.h>
  #include <string.h>
+#include <signal.h>

  #include <rte_common.h>
  #include <rte_malloc.h>
@@ -196,6 +197,14 @@ handle_packet(struct rte_mbuf *buf)

  }

+static void
+signal_handler(int signal)
+{
+       if (signal == SIGINT)
+               rte_eal_cleanup();
+       exit(0);
+}
Calling rte_eal_cleanup from a signal handler is a bad idea.
In most cases, you are racing with other threads still using DPDK resources.
https://git.dpdk.org/dpdk/commit?id=2c434431f4
https://git.dpdk.org/dpdk/commit?id=613ce6691c

This might not be a problem in this multi_process example, but let's
keep a consistent way across all examples.
Thanks.
Hi,
   I want to know why you don't think he's a problem. recently, we use 
the patch
https://patchwork.dpdk.org/patch/86988/
startup with multiprocess. Use the tester to send traffic and kill the 
slave process repeatedly.
The coredump exception occurs. According to my analysis, the cause is 
that resources are not released after the slave process is killed.

Thanks
Lijun Ou
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help