[lxc-devel] [PATCH] exclude non-existing signals from the loop
Serge Hallyn
serge.hallyn at ubuntu.com
Thu Jan 16 21:38:56 UTC 2014
Quoting S.Çağlar Onur (caglar at 10ur.org):
> On Thu, Jan 16, 2014 at 4:24 PM, Serge Hallyn <serge.hallyn at ubuntu.com> wrote:
> > Quoting S.Çağlar Onur (caglar at 10ur.org):
> >> 32 and 33 are not defined and causing sigaction to fail. "kill -l" shows following
> >> on my system
> >>
> >> 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
> >> 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
> >> 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
> >> 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
> >> 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
> >> 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
> >> 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
> >> 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
> >> 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
> >> 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
> >> 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
> >> 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
> >> 63) SIGRTMAX-1 64) SIGRTMAX
> >>
> >> Signed-off-by: S.Çağlar Onur <caglar at 10ur.org>
> >
> > Odd... on my system NSIG is 32, so these should never hit (since it is
> > in a while i<NSIG loop)
>
> Printing NSIG via ERROR shows that its 64 on my system.
So a header file is #defining NSIG, which is already defined to 32
in kernel headers, to _NSIG, which is 64.
Looking around the current state of kernel headers, i wonder whether
we should imply use min(SIGRTMIN, NSIG).
> > Does 32 show up in /usr/include/asm-generic/signal.h or
> > /usr/include/`arch`-linux-gnu/asm/signal.h ?
>
> [caglar at qp:~/Projects/lxc(master)] find /usr/include/ -name signal.h |
> xargs grep NSIG
> /usr/include/asm-generic/signal.h:#define _NSIG 64
> /usr/include/asm-generic/signal.h:#define _NSIG_BPW __BITS_PER_LONG
> /usr/include/asm-generic/signal.h:#define _NSIG_WORDS (_NSIG / _NSIG_BPW)
> /usr/include/asm-generic/signal.h:#define SIGRTMAX _NSIG
> /usr/include/asm-generic/signal.h:#define MINSIGSTKSZ 2048
> /usr/include/asm-generic/signal.h: unsigned long sig[_NSIG_WORDS];
> /usr/include/x86_64-linux-gnu/asm/signal.h:#define NSIG 32
> /usr/include/x86_64-linux-gnu/asm/signal.h:#define SIGRTMAX _NSIG
> /usr/include/x86_64-linux-gnu/asm/signal.h:#define MINSIGSTKSZ 2048
> /usr/include/signal.h:# define NSIG _NSIG
> /usr/include/signal.h:extern const char *const _sys_siglist[_NSIG];
> /usr/include/signal.h:extern const char *const sys_siglist[_NSIG];
>
> >> ---
> >> src/lxc/lxc_init.c | 3 ++-
> >> 1 file changed, 2 insertions(+), 1 deletion(-)
> >>
> >> diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c
> >> index a59dd9c..ae64af8 100644
> >> --- a/src/lxc/lxc_init.c
> >> +++ b/src/lxc/lxc_init.c
> >> @@ -143,7 +143,8 @@ int main(int argc, char *argv[])
> >> i == SIGSEGV ||
> >> i == SIGBUS ||
> >> i == SIGSTOP ||
> >> - i == SIGKILL)
> >> + i == SIGKILL ||
> >> + i == 32 || i == 33)
> >> continue;
> >>
> >> if (sigfillset(&act.sa_mask) ||
> >> --
> >> 1.8.3.2
> >>
> >> _______________________________________________
> >> lxc-devel mailing list
> >> lxc-devel at lists.linuxcontainers.org
> >> http://lists.linuxcontainers.org/listinfo/lxc-devel
> > _______________________________________________
> > lxc-devel mailing list
> > lxc-devel at lists.linuxcontainers.org
> > http://lists.linuxcontainers.org/listinfo/lxc-devel
>
>
>
> --
> S.Çağlar Onur <caglar at 10ur.org>
> _______________________________________________
> lxc-devel mailing list
> lxc-devel at lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
More information about the lxc-devel
mailing list