[dpdk-stable] [PATCH] examples/eventdev_pipeline: fix segfault on exit

Zhou, JunX W junx.w.zhou at intel.com
Thu May 7 12:07:56 CEST 2020


Tested-by: Zhou, JunX W <junx.w.zhou at intel.com>

-----Original Message-----
From: Van Haaren, Harry 
Sent: Tuesday, May 5, 2020 5:39 PM
To: dev at dpdk.org
Cc: Zhou, JunX W <junx.w.zhou at intel.com>; Van Haaren, Harry <harry.van.haaren at intel.com>; stable at dpdk.org; pbhagavatula at caviumnetworks.com
Subject: [PATCH] examples/eventdev_pipeline: fix segfault on exit

This commit fixes a segfault on exit by using Ctrl^C if the master lcore was also being used as a worker core. The root cause of the issue was that the interrupt handler was cleaning up resources such as the ethdev and eventdev ports, and once the interrupt handler would return, that thread would continue working as an eventdev worker, and dereference the memory which just had free() called on it.

Fixed by moving the cleanup code from the interrupt handler to the cleanup stage of main(), which the master thread will execute once it has returned from its worker() functionality.

Fixes: 085edac2ca38 ("examples/eventdev_pipeline: support Tx adapter")

Signed-off-by: Harry van Haaren <harry.van.haaren at intel.com>

---

Cc: stable at dpdk.org
Cc: pbhagavatula at caviumnetworks.com
---
 examples/eventdev_pipeline/main.c | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/examples/eventdev_pipeline/main.c b/examples/eventdev_pipeline/main.c
index d0da51b1c..21958269f 100644
--- a/examples/eventdev_pipeline/main.c
+++ b/examples/eventdev_pipeline/main.c
@@ -301,12 +301,6 @@ signal_handler(int signum)
 
 		rte_eal_mp_wait_lcore();
 
-		RTE_ETH_FOREACH_DEV(portid) {
-			rte_eth_dev_close(portid);
-		}
-
-		rte_event_dev_stop(0);
-		rte_event_dev_close(0);
 	}
 	if (signum == SIGTSTP)
 		rte_event_dev_dump(0, stdout);
@@ -469,5 +463,14 @@ main(int argc, char **argv)
 
 	}
 
+	RTE_ETH_FOREACH_DEV(portid) {
+		rte_eth_dev_close(portid);
+	}
+
+	rte_event_dev_stop(0);
+	rte_event_dev_close(0);
+
+	rte_eal_cleanup();
+
 	return 0;
 }
--
2.17.1



More information about the stable mailing list