From 5fdc47c237b3e370dc18d3ed593ce3bd7c346110 Mon Sep 17 00:00:00 2001 From: nandfan Date: Mon, 22 Feb 2021 17:17:17 +0800 Subject: vcl: fix vls_intercept_sigchld_handler be called recursively The old_sa is rewrite with vls_intercept_sigchld_handler when parent process fork child second time, parent process will call vls_intercept_sigchld_handler recursively when received child signal. Type: fix Signed-off-by: nandfan Change-Id: Ia58a254d58058489aa2d91b76a3b3cab1e38f802 --- src/vcl/vcl_locked.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/vcl/vcl_locked.c') diff --git a/src/vcl/vcl_locked.c b/src/vcl/vcl_locked.c index 90ee73546b1..95da1aab54b 100644 --- a/src/vcl/vcl_locked.c +++ b/src/vcl/vcl_locked.c @@ -1561,6 +1561,11 @@ static void vls_incercept_sigchld () { struct sigaction sa; + if (old_sa.sa_sigaction) + { + VDBG (0, "have intercepted sigchld"); + return; + } clib_memset (&sa, 0, sizeof (sa)); sa.sa_sigaction = vls_intercept_sigchld_handler; sa.sa_flags = SA_SIGINFO; -- cgit 1.2.3-korg