From: Jian Xiao <j...@linux.vnet.ibm.com> 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); -- 1.7.1 ------------------------------------------------------------------------------ Keep Your Developer Skills Current with LearnDevNow! The most comprehensive online learning library for Microsoft developers is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3, Metro Style Apps, more. Free future releases when you subscribe now! http://p.sf.net/sfu/learndevnow-d2d _______________________________________________ Lxc-devel mailing list Lxc-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/lxc-devel