Re: [lxc-devel] [PATCH] lxc_init.c: error handing for sigaction and sigprocmask

2014-01-16 Thread S . Çağlar Onur
On Thu, Jan 16, 2014 at 3:16 PM, Stéphane Graber  wrote:
> On Thu, Jan 16, 2014 at 03:05:46PM -0500, S.Çağlar Onur wrote:
>> Hey,
>>
>> On Thu, Jan 16, 2014 at 11:03 AM, Stéphane Graber  
>> wrote:
>> > On Thu, Jan 16, 2014 at 03:30:01PM +0800, Qiang Huang wrote:
>> >> Look through all LXC code and seems like only here are missed.
>> >>
>> >> Signed-off-by: Qiang Huang 
>> >
>> > Acked-by: Stéphane Graber 
>>
>> Looks like lxc-execute stopped working after this patch
>>
>> [caglar@qp:~/go/src/github.com/caglar10ur/lxc(devel)] sudo lxc-execute
>> -n t -- ls
>> lxc-init: Invalid argument - failed to sigaction
>>
>> reverting the commit makes it functional again
>>
>> [caglar@qp:~/go/src/github.com/caglar10ur/lxc(devel)] sudo lxc-execute
>> -n t -- ls
>> LICENSE  Makefile  README.md  const.go  container.go  examples  lxc.c
>> lxc.go  lxc.h  lxc_test.go  type.go  util.go
>
> Interesting, can we try to figure out what sig handler is failing, I
> believe that'd be more interesting than doing a plain revert as the
> intent of the previous commit still seems good.

Just submitted a possible fix to this problem

>>
>> >> ---
>> >> Maybe this bug can be marked resolved:
>> >> https://github.com/lxc/lxc/issues/83
>> >> ---
>> >>  src/lxc/lxc_init.c | 46 +++---
>> >>  1 file changed, 31 insertions(+), 15 deletions(-)
>> >>
>> >> diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c
>> >> index d88a935..a59dd9c 100644
>> >> --- a/src/lxc/lxc_init.c
>> >> +++ b/src/lxc/lxc_init.c
>> >> @@ -123,11 +123,14 @@ int main(int argc, char *argv[])
>> >>* mask all the signals so we are safe to install a
>> >>* signal handler and to fork
>> >>*/
>> >> - sigfillset(&mask);
>> >> - sigdelset(&mask, SIGILL);
>> >> - sigdelset(&mask, SIGSEGV);
>> >> - sigdelset(&mask, SIGBUS);
>> >> - sigprocmask(SIG_SETMASK, &mask, &omask);
>> >> + if (sigfillset(&mask) ||
>> >> + sigdelset(&mask, SIGILL) ||
>> >> + sigdelset(&mask, SIGSEGV) ||
>> >> + sigdelset(&mask, SIGBUS) ||
>> >> + sigprocmask(SIG_SETMASK, &mask, &omask)) {
>> >> + SYSERROR("failed to set signal mask");
>> >> + exit(EXIT_FAILURE);
>> >> + }
>> >>
>> >>   for (i = 1; i < NSIG; i++) {
>> >>   struct sigaction act;
>> >> @@ -143,15 +146,22 @@ int main(int argc, char *argv[])
>> >>   i == SIGKILL)
>> >>   continue;
>> >>
>> >> - sigfillset(&act.sa_mask);
>> >> - 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);
>> >> + if (sigfillset(&act.sa_mask) ||
>> >> + 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)) {
>> >> + ERROR("failed to set signal");
>> >> + exit(EXIT_FAILURE);
>> >> + }
>> >> +
>> >>   act.sa_flags = 0;
>> >>   act.sa_handler = interrupt_handler;
>> >> - sigaction(i, &act, NULL);
>> >> + if (sigaction(i, &act, NULL)) {
>> >> + SYSERROR("failed to sigaction");
>> >> + exit(EXIT_FAILURE);
>> >> + }
>> >>   }
>> >>
>> >>   lxc_setup_fs();
>> >> @@ -170,7 +180,10 @@ int main(int argc, char *argv[])
>> >>   for (i = 1; i < NSIG; i++)
>> >>   signal(i, SIG_DFL);
>> >>
>> >> - sigprocmask(SIG_SETMASK, &omask, NULL);
>> >> + if (sigprocmask(SIG_SETMASK, &omask, NULL)) {
>> >> + SYSERROR("failed to set signal mask");
>> >> + exit(EXIT_FAILURE);
>> >> + }
>> >>
>> >>   NOTICE("about to exec '%s'", aargv[0]);
>> >>
>> >> @@ -180,8 +193,11 @@ int main(int argc, char *argv[])
>> >>   }
>> >>
>> >>   /* let's process the signals now */
>> >> - sigdelset(&omask, SIGALRM);
>> >> - sigprocmask(SIG_SETMASK, &omask, NULL);
>> >> + if (sigdelset(&omask, SIGALRM) ||
>> >> + sigprocmask(SIG_SETMASK, &omask, NULL)) {
>> >> + SYSERROR("failed to set signal mask");
>> >> + exit(EXIT_FAILURE);
>> >> + }
>> >>
>> >>   /* no need of other inherited fds but stderr */
>> >>   close(fileno(stdin));
>> >> --
>> >> 1.8.3
>> >>
>> >
>> > --
>> > Stéphane Graber
>> > Ubuntu developer
>> > http://www.ubuntu.com
>> >
>> > ___
>> > lxc-devel mailing list
>> > lxc-devel@lists.linuxcontainers.org
>> > http://lists.linuxcontainers.org/listinfo/lxc-devel
>> >
>>
>>
>>

Re: [lxc-devel] [PATCH] lxc_init.c: error handing for sigaction and sigprocmask

2014-01-16 Thread Stéphane Graber
On Thu, Jan 16, 2014 at 03:05:46PM -0500, S.Çağlar Onur wrote:
> Hey,
> 
> On Thu, Jan 16, 2014 at 11:03 AM, Stéphane Graber  wrote:
> > On Thu, Jan 16, 2014 at 03:30:01PM +0800, Qiang Huang wrote:
> >> Look through all LXC code and seems like only here are missed.
> >>
> >> Signed-off-by: Qiang Huang 
> >
> > Acked-by: Stéphane Graber 
> 
> Looks like lxc-execute stopped working after this patch
> 
> [caglar@qp:~/go/src/github.com/caglar10ur/lxc(devel)] sudo lxc-execute
> -n t -- ls
> lxc-init: Invalid argument - failed to sigaction
> 
> reverting the commit makes it functional again
> 
> [caglar@qp:~/go/src/github.com/caglar10ur/lxc(devel)] sudo lxc-execute
> -n t -- ls
> LICENSE  Makefile  README.md  const.go  container.go  examples  lxc.c
> lxc.go  lxc.h  lxc_test.go  type.go  util.go

Interesting, can we try to figure out what sig handler is failing, I
believe that'd be more interesting than doing a plain revert as the
intent of the previous commit still seems good.

> 
> >> ---
> >> Maybe this bug can be marked resolved:
> >> https://github.com/lxc/lxc/issues/83
> >> ---
> >>  src/lxc/lxc_init.c | 46 +++---
> >>  1 file changed, 31 insertions(+), 15 deletions(-)
> >>
> >> diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c
> >> index d88a935..a59dd9c 100644
> >> --- a/src/lxc/lxc_init.c
> >> +++ b/src/lxc/lxc_init.c
> >> @@ -123,11 +123,14 @@ int main(int argc, char *argv[])
> >>* mask all the signals so we are safe to install a
> >>* signal handler and to fork
> >>*/
> >> - sigfillset(&mask);
> >> - sigdelset(&mask, SIGILL);
> >> - sigdelset(&mask, SIGSEGV);
> >> - sigdelset(&mask, SIGBUS);
> >> - sigprocmask(SIG_SETMASK, &mask, &omask);
> >> + if (sigfillset(&mask) ||
> >> + sigdelset(&mask, SIGILL) ||
> >> + sigdelset(&mask, SIGSEGV) ||
> >> + sigdelset(&mask, SIGBUS) ||
> >> + sigprocmask(SIG_SETMASK, &mask, &omask)) {
> >> + SYSERROR("failed to set signal mask");
> >> + exit(EXIT_FAILURE);
> >> + }
> >>
> >>   for (i = 1; i < NSIG; i++) {
> >>   struct sigaction act;
> >> @@ -143,15 +146,22 @@ int main(int argc, char *argv[])
> >>   i == SIGKILL)
> >>   continue;
> >>
> >> - sigfillset(&act.sa_mask);
> >> - 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);
> >> + if (sigfillset(&act.sa_mask) ||
> >> + 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)) {
> >> + ERROR("failed to set signal");
> >> + exit(EXIT_FAILURE);
> >> + }
> >> +
> >>   act.sa_flags = 0;
> >>   act.sa_handler = interrupt_handler;
> >> - sigaction(i, &act, NULL);
> >> + if (sigaction(i, &act, NULL)) {
> >> + SYSERROR("failed to sigaction");
> >> + exit(EXIT_FAILURE);
> >> + }
> >>   }
> >>
> >>   lxc_setup_fs();
> >> @@ -170,7 +180,10 @@ int main(int argc, char *argv[])
> >>   for (i = 1; i < NSIG; i++)
> >>   signal(i, SIG_DFL);
> >>
> >> - sigprocmask(SIG_SETMASK, &omask, NULL);
> >> + if (sigprocmask(SIG_SETMASK, &omask, NULL)) {
> >> + SYSERROR("failed to set signal mask");
> >> + exit(EXIT_FAILURE);
> >> + }
> >>
> >>   NOTICE("about to exec '%s'", aargv[0]);
> >>
> >> @@ -180,8 +193,11 @@ int main(int argc, char *argv[])
> >>   }
> >>
> >>   /* let's process the signals now */
> >> - sigdelset(&omask, SIGALRM);
> >> - sigprocmask(SIG_SETMASK, &omask, NULL);
> >> + if (sigdelset(&omask, SIGALRM) ||
> >> + sigprocmask(SIG_SETMASK, &omask, NULL)) {
> >> + SYSERROR("failed to set signal mask");
> >> + exit(EXIT_FAILURE);
> >> + }
> >>
> >>   /* no need of other inherited fds but stderr */
> >>   close(fileno(stdin));
> >> --
> >> 1.8.3
> >>
> >
> > --
> > Stéphane Graber
> > Ubuntu developer
> > http://www.ubuntu.com
> >
> > ___
> > lxc-devel mailing list
> > lxc-devel@lists.linuxcontainers.org
> > http://lists.linuxcontainers.org/listinfo/lxc-devel
> >
> 
> 
> 
> -- 
> S.Çağlar Onur 
> ___
> lxc-devel mailing list
> lxc-devel@lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel

-- 
Stéphane Graber
Ubuntu developer
http://

Re: [lxc-devel] [PATCH] lxc_init.c: error handing for sigaction and sigprocmask

2014-01-16 Thread S . Çağlar Onur
Hey,

On Thu, Jan 16, 2014 at 11:03 AM, Stéphane Graber  wrote:
> On Thu, Jan 16, 2014 at 03:30:01PM +0800, Qiang Huang wrote:
>> Look through all LXC code and seems like only here are missed.
>>
>> Signed-off-by: Qiang Huang 
>
> Acked-by: Stéphane Graber 

Looks like lxc-execute stopped working after this patch

[caglar@qp:~/go/src/github.com/caglar10ur/lxc(devel)] sudo lxc-execute
-n t -- ls
lxc-init: Invalid argument - failed to sigaction

reverting the commit makes it functional again

[caglar@qp:~/go/src/github.com/caglar10ur/lxc(devel)] sudo lxc-execute
-n t -- ls
LICENSE  Makefile  README.md  const.go  container.go  examples  lxc.c
lxc.go  lxc.h  lxc_test.go  type.go  util.go

>> ---
>> Maybe this bug can be marked resolved:
>> https://github.com/lxc/lxc/issues/83
>> ---
>>  src/lxc/lxc_init.c | 46 +++---
>>  1 file changed, 31 insertions(+), 15 deletions(-)
>>
>> diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c
>> index d88a935..a59dd9c 100644
>> --- a/src/lxc/lxc_init.c
>> +++ b/src/lxc/lxc_init.c
>> @@ -123,11 +123,14 @@ int main(int argc, char *argv[])
>>* mask all the signals so we are safe to install a
>>* signal handler and to fork
>>*/
>> - sigfillset(&mask);
>> - sigdelset(&mask, SIGILL);
>> - sigdelset(&mask, SIGSEGV);
>> - sigdelset(&mask, SIGBUS);
>> - sigprocmask(SIG_SETMASK, &mask, &omask);
>> + if (sigfillset(&mask) ||
>> + sigdelset(&mask, SIGILL) ||
>> + sigdelset(&mask, SIGSEGV) ||
>> + sigdelset(&mask, SIGBUS) ||
>> + sigprocmask(SIG_SETMASK, &mask, &omask)) {
>> + SYSERROR("failed to set signal mask");
>> + exit(EXIT_FAILURE);
>> + }
>>
>>   for (i = 1; i < NSIG; i++) {
>>   struct sigaction act;
>> @@ -143,15 +146,22 @@ int main(int argc, char *argv[])
>>   i == SIGKILL)
>>   continue;
>>
>> - sigfillset(&act.sa_mask);
>> - 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);
>> + if (sigfillset(&act.sa_mask) ||
>> + 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)) {
>> + ERROR("failed to set signal");
>> + exit(EXIT_FAILURE);
>> + }
>> +
>>   act.sa_flags = 0;
>>   act.sa_handler = interrupt_handler;
>> - sigaction(i, &act, NULL);
>> + if (sigaction(i, &act, NULL)) {
>> + SYSERROR("failed to sigaction");
>> + exit(EXIT_FAILURE);
>> + }
>>   }
>>
>>   lxc_setup_fs();
>> @@ -170,7 +180,10 @@ int main(int argc, char *argv[])
>>   for (i = 1; i < NSIG; i++)
>>   signal(i, SIG_DFL);
>>
>> - sigprocmask(SIG_SETMASK, &omask, NULL);
>> + if (sigprocmask(SIG_SETMASK, &omask, NULL)) {
>> + SYSERROR("failed to set signal mask");
>> + exit(EXIT_FAILURE);
>> + }
>>
>>   NOTICE("about to exec '%s'", aargv[0]);
>>
>> @@ -180,8 +193,11 @@ int main(int argc, char *argv[])
>>   }
>>
>>   /* let's process the signals now */
>> - sigdelset(&omask, SIGALRM);
>> - sigprocmask(SIG_SETMASK, &omask, NULL);
>> + if (sigdelset(&omask, SIGALRM) ||
>> + sigprocmask(SIG_SETMASK, &omask, NULL)) {
>> + SYSERROR("failed to set signal mask");
>> + exit(EXIT_FAILURE);
>> + }
>>
>>   /* no need of other inherited fds but stderr */
>>   close(fileno(stdin));
>> --
>> 1.8.3
>>
>
> --
> Stéphane Graber
> Ubuntu developer
> http://www.ubuntu.com
>
> ___
> lxc-devel mailing list
> lxc-devel@lists.linuxcontainers.org
> http://lists.linuxcontainers.org/listinfo/lxc-devel
>



-- 
S.Çağlar Onur 
___
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel


Re: [lxc-devel] [PATCH] lxc_init.c: error handing for sigaction and sigprocmask

2014-01-16 Thread Stéphane Graber
On Thu, Jan 16, 2014 at 03:30:01PM +0800, Qiang Huang wrote:
> Look through all LXC code and seems like only here are missed.
> 
> Signed-off-by: Qiang Huang 

Acked-by: Stéphane Graber 

> ---
> Maybe this bug can be marked resolved:
> https://github.com/lxc/lxc/issues/83
> ---
>  src/lxc/lxc_init.c | 46 +++---
>  1 file changed, 31 insertions(+), 15 deletions(-)
> 
> diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c
> index d88a935..a59dd9c 100644
> --- a/src/lxc/lxc_init.c
> +++ b/src/lxc/lxc_init.c
> @@ -123,11 +123,14 @@ int main(int argc, char *argv[])
>* mask all the signals so we are safe to install a
>* signal handler and to fork
>*/
> - sigfillset(&mask);
> - sigdelset(&mask, SIGILL);
> - sigdelset(&mask, SIGSEGV);
> - sigdelset(&mask, SIGBUS);
> - sigprocmask(SIG_SETMASK, &mask, &omask);
> + if (sigfillset(&mask) ||
> + sigdelset(&mask, SIGILL) ||
> + sigdelset(&mask, SIGSEGV) ||
> + sigdelset(&mask, SIGBUS) ||
> + sigprocmask(SIG_SETMASK, &mask, &omask)) {
> + SYSERROR("failed to set signal mask");
> + exit(EXIT_FAILURE);
> + }
> 
>   for (i = 1; i < NSIG; i++) {
>   struct sigaction act;
> @@ -143,15 +146,22 @@ int main(int argc, char *argv[])
>   i == SIGKILL)
>   continue;
> 
> - sigfillset(&act.sa_mask);
> - 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);
> + if (sigfillset(&act.sa_mask) ||
> + 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)) {
> + ERROR("failed to set signal");
> + exit(EXIT_FAILURE);
> + }
> +
>   act.sa_flags = 0;
>   act.sa_handler = interrupt_handler;
> - sigaction(i, &act, NULL);
> + if (sigaction(i, &act, NULL)) {
> + SYSERROR("failed to sigaction");
> + exit(EXIT_FAILURE);
> + }
>   }
> 
>   lxc_setup_fs();
> @@ -170,7 +180,10 @@ int main(int argc, char *argv[])
>   for (i = 1; i < NSIG; i++)
>   signal(i, SIG_DFL);
> 
> - sigprocmask(SIG_SETMASK, &omask, NULL);
> + if (sigprocmask(SIG_SETMASK, &omask, NULL)) {
> + SYSERROR("failed to set signal mask");
> + exit(EXIT_FAILURE);
> + }
> 
>   NOTICE("about to exec '%s'", aargv[0]);
> 
> @@ -180,8 +193,11 @@ int main(int argc, char *argv[])
>   }
> 
>   /* let's process the signals now */
> - sigdelset(&omask, SIGALRM);
> - sigprocmask(SIG_SETMASK, &omask, NULL);
> + if (sigdelset(&omask, SIGALRM) ||
> + sigprocmask(SIG_SETMASK, &omask, NULL)) {
> + SYSERROR("failed to set signal mask");
> + exit(EXIT_FAILURE);
> + }
> 
>   /* no need of other inherited fds but stderr */
>   close(fileno(stdin));
> -- 
> 1.8.3
> 

-- 
Stéphane Graber
Ubuntu developer
http://www.ubuntu.com


signature.asc
Description: Digital signature
___
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel


[lxc-devel] [PATCH] lxc_init.c: error handing for sigaction and sigprocmask

2014-01-15 Thread Qiang Huang
Look through all LXC code and seems like only here are missed.

Signed-off-by: Qiang Huang 
---
Maybe this bug can be marked resolved:
https://github.com/lxc/lxc/issues/83
---
 src/lxc/lxc_init.c | 46 +++---
 1 file changed, 31 insertions(+), 15 deletions(-)

diff --git a/src/lxc/lxc_init.c b/src/lxc/lxc_init.c
index d88a935..a59dd9c 100644
--- a/src/lxc/lxc_init.c
+++ b/src/lxc/lxc_init.c
@@ -123,11 +123,14 @@ int main(int argc, char *argv[])
 * mask all the signals so we are safe to install a
 * signal handler and to fork
 */
-   sigfillset(&mask);
-   sigdelset(&mask, SIGILL);
-   sigdelset(&mask, SIGSEGV);
-   sigdelset(&mask, SIGBUS);
-   sigprocmask(SIG_SETMASK, &mask, &omask);
+   if (sigfillset(&mask) ||
+   sigdelset(&mask, SIGILL) ||
+   sigdelset(&mask, SIGSEGV) ||
+   sigdelset(&mask, SIGBUS) ||
+   sigprocmask(SIG_SETMASK, &mask, &omask)) {
+   SYSERROR("failed to set signal mask");
+   exit(EXIT_FAILURE);
+   }

for (i = 1; i < NSIG; i++) {
struct sigaction act;
@@ -143,15 +146,22 @@ int main(int argc, char *argv[])
i == SIGKILL)
continue;

-   sigfillset(&act.sa_mask);
-   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);
+   if (sigfillset(&act.sa_mask) ||
+   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)) {
+   ERROR("failed to set signal");
+   exit(EXIT_FAILURE);
+   }
+
act.sa_flags = 0;
act.sa_handler = interrupt_handler;
-   sigaction(i, &act, NULL);
+   if (sigaction(i, &act, NULL)) {
+   SYSERROR("failed to sigaction");
+   exit(EXIT_FAILURE);
+   }
}

lxc_setup_fs();
@@ -170,7 +180,10 @@ int main(int argc, char *argv[])
for (i = 1; i < NSIG; i++)
signal(i, SIG_DFL);

-   sigprocmask(SIG_SETMASK, &omask, NULL);
+   if (sigprocmask(SIG_SETMASK, &omask, NULL)) {
+   SYSERROR("failed to set signal mask");
+   exit(EXIT_FAILURE);
+   }

NOTICE("about to exec '%s'", aargv[0]);

@@ -180,8 +193,11 @@ int main(int argc, char *argv[])
}

/* let's process the signals now */
-   sigdelset(&omask, SIGALRM);
-   sigprocmask(SIG_SETMASK, &omask, NULL);
+   if (sigdelset(&omask, SIGALRM) ||
+   sigprocmask(SIG_SETMASK, &omask, NULL)) {
+   SYSERROR("failed to set signal mask");
+   exit(EXIT_FAILURE);
+   }

/* no need of other inherited fds but stderr */
close(fileno(stdin));
-- 
1.8.3

___
lxc-devel mailing list
lxc-devel@lists.linuxcontainers.org
http://lists.linuxcontainers.org/listinfo/lxc-devel