This patch is to correct the manipulation of signal masks when installing signal handlers for lxc-init.
Signed-off-by: Jian Xiao<j...@linux.vnet.ibm.com> Signed-off-by: Greg Kurz<gk...@fr.ibm.com> --- src/lxc/lxc_init.c | 22 +++++++++++++++++++--- 1 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c index a534b51..0353dbc 100644 --- a/src/lxc/lxc_init.c +++ b/src/lxc/lxc_init.c @@ -95,15 +95,31 @@ int main(int argc, char *argv[]) * signal handler and to fork */ sigfillset(&mask); + sigdelset(&mask, SIGILL); + sigdelset(&mask, SIGSEGV); + sigdelset(&mask, SIGBUS); sigprocmask(SIG_SETMASK,&mask,&omask); for (i = 1; i< NSIG; i++) { struct sigaction act; + /* Exclude some signals: ILL, SEGV and BUS are likely to + * reveal a bug and we want a core. STOP and KILL cannot be + * handled anyway: they're here for documentation. + */ + if (i == SIGILL || + i == SIGSEGV || + i == SIGBUS || + i == SIGSTOP || + i == SIGKILL) + continue; + sigfillset(&act.sa_mask); - sigdelset(&mask, SIGILL); - sigdelset(&mask, SIGSEGV); - sigdelset(&mask, SIGBUS); + sigdelset(&act.sa_mask, SIGILL); + sigdelset(&act.sa_mask, SIGSEGV); + sigdelset(&act.sa_mask, SIGBUS); + sigdelset(&act.sa_mask, SIGSTOP); + sigdelset(&act.sa_mask, SIGKILL); act.sa_flags = 0; act.sa_handler = interrupt_handler; sigaction(i,&act, NULL); -- ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel