From: nandfan Date: Mon, 22 Feb 2021 09:17:17 +0000 (+0800) Subject: vcl: fix vls_intercept_sigchld_handler be called recursively X-Git-Tag: v21.10-rc0~487 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=5fdc47c237b3e370dc18d3ed593ce3bd7c346110;p=vpp.git 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 --- 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;