criu build failures with glibc-2.25.90 (fedora rawhide)

Submitted by Adrian Reber on June 29, 2017, 7:13 a.m.

Details

Message ID 20170629071301.GC19906@lisas.de
State Accepted
Series "criu build failures with glibc-2.25.90 (fedora rawhide)"
Headers show

Commit Message

Adrian Reber June 29, 2017, 7:13 a.m.
Trying to upgrade the criu package on Fedora I ran into a build failure
on Fedora rawhide (development branch).

https://kojipkgs.fedoraproject.org//work/tasks/3909/20233909/build.log

The next pre-release of glibc (2.25.90) is part of that Fedora branch
and glibc removed SIGUNUSED from bits/signum.h:

criu/cr-restore.c: In function 'sig_fatal':
criu/cr-restore.c:900:9: error: 'SIGUNUSED' undeclared (first use in this function); did you mean 'SI_USER'?
   (1 << SIGUNUSED)|\
         ^
criu/cr-restore.c:907:41: note: in expansion of macro 'SIG_FATAL_MASK'
  return (sig > 0) && (sig < SIGMAX) && (SIG_FATAL_MASK & (1UL << sig));
                                         ^~~~~~~~~~~~~~
criu/cr-restore.c:900:9: note: each undeclared identifier is reported only once for each function it appears in
   (1 << SIGUNUSED)|\
         ^
criu/cr-restore.c:907:41: note: in expansion of macro 'SIG_FATAL_MASK'
  return (sig > 0) && (sig < SIGMAX) && (SIG_FATAL_MASK & (1UL << sig));
                                         ^~~~~~~~~~~~~~
criu/cr-restore.c:908:1: warning: control reaches end of non-void function [-Wreturn-type]
 }
 ^
make[2]: *** [/builddir/build/BUILD/criu-3.2.1/scripts/nmk/scripts/build.mk:111: criu/cr-restore.o] Error 1
make[1]: *** [criu/Makefile:73: criu/built-in.o] Error 2
make: *** [Makefile:218: criu] Error 2

According to a glibc developer SIGSYS returns the same value as
SIGUNUSED. Not sure if that is the right fix for criu

https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8082d91e1c449e0cb137468b731004a5e605c8c6




I can submit a real patch if this is the right approach.

With this patch I get following zdtm result:

################### 10 TEST(S) FAILED (TOTAL 294/SKIPPED 26) ###################
 * zdtm/static/del_standalone_un(h)
 * zdtm/static/cgroup_stray(h)
 * zdtm/static/cgroup02(h)
 * zdtm/static/cgroupns(h)
 * zdtm/static/cgroup01(h)
 * zdtm/static/cgroup00(h)
 * zdtm/static/socket-tcp-syn-sent(h)
 * zdtm/static/cgroup04(h)
 * zdtm/static/deleted_unix_sock(h)
 * zdtm/static/cgroup03(h)
##################################### FAIL #####################################

All cgroup related tests are hanging and I had to kill criu
manually.

		Adrian

Patch hide | download patch | download mbox

diff --git a/criu/cr-restore.c b/criu/cr-restore.c
index cfc8f504..7e11c8c5 100644
--- a/criu/cr-restore.c
+++ b/criu/cr-restore.c
@@ -897,7 +897,6 @@  static void zombie_prepare_signals(void)
                (1 << SIGPOLL)  |\
                (1 << SIGIO)    |\
                (1 << SIGSYS)   |\
-               (1 << SIGUNUSED)|\
                (1 << SIGSTKFLT)|\
                (1 << SIGPWR)    \
        )
diff --git a/test/zdtm/static/pthread01.c b/test/zdtm/static/pthread01.c
index 52f849c0..2520fcfe 100644
--- a/test/zdtm/static/pthread01.c
+++ b/test/zdtm/static/pthread01.c
@@ -43,7 +43,7 @@  static char *decode_signal(const sigset_t *s, char *buf)
        COLLECT(SIGTERM); COLLECT(SIGSTKFLT); COLLECT(SIGCHLD); COLLECT(SIGCONT); COLLECT(SIGSTOP);
        COLLECT(SIGTSTP); COLLECT(SIGTTIN); COLLECT(SIGTTOU); COLLECT(SIGURG); COLLECT(SIGXCPU);
        COLLECT(SIGXFSZ); COLLECT(SIGVTALRM); COLLECT(SIGPROF); COLLECT(SIGWINCH); COLLECT(SIGIO);
-       COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS); COLLECT(SIGUNUSED);
+       COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS);
 #undef COLLECT
 
        return buf;

Comments

Pavel Emelianov June 29, 2017, 10:21 a.m.
On 06/29/2017 10:13 AM, Adrian Reber wrote:
> Trying to upgrade the criu package on Fedora I ran into a build failure
> on Fedora rawhide (development branch).
> 
> https://kojipkgs.fedoraproject.org//work/tasks/3909/20233909/build.log
> 
> The next pre-release of glibc (2.25.90) is part of that Fedora branch
> and glibc removed SIGUNUSED from bits/signum.h:
> 
> criu/cr-restore.c: In function 'sig_fatal':
> criu/cr-restore.c:900:9: error: 'SIGUNUSED' undeclared (first use in this function); did you mean 'SI_USER'?
>    (1 << SIGUNUSED)|\
>          ^
> criu/cr-restore.c:907:41: note: in expansion of macro 'SIG_FATAL_MASK'
>   return (sig > 0) && (sig < SIGMAX) && (SIG_FATAL_MASK & (1UL << sig));
>                                          ^~~~~~~~~~~~~~
> criu/cr-restore.c:900:9: note: each undeclared identifier is reported only once for each function it appears in
>    (1 << SIGUNUSED)|\
>          ^
> criu/cr-restore.c:907:41: note: in expansion of macro 'SIG_FATAL_MASK'
>   return (sig > 0) && (sig < SIGMAX) && (SIG_FATAL_MASK & (1UL << sig));
>                                          ^~~~~~~~~~~~~~
> criu/cr-restore.c:908:1: warning: control reaches end of non-void function [-Wreturn-type]
>  }
>  ^
> make[2]: *** [/builddir/build/BUILD/criu-3.2.1/scripts/nmk/scripts/build.mk:111: criu/cr-restore.o] Error 1
> make[1]: *** [criu/Makefile:73: criu/built-in.o] Error 2
> make: *** [Makefile:218: criu] Error 2
> 
> According to a glibc developer SIGSYS returns the same value as
> SIGUNUSED. Not sure if that is the right fix for criu

Cc-ing Dima.

> https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8082d91e1c449e0cb137468b731004a5e605c8c6
> 
> 
> diff --git a/criu/cr-restore.c b/criu/cr-restore.c
> index cfc8f504..7e11c8c5 100644
> --- a/criu/cr-restore.c
> +++ b/criu/cr-restore.c
> @@ -897,7 +897,6 @@ static void zombie_prepare_signals(void)
>                 (1 << SIGPOLL)  |\
>                 (1 << SIGIO)    |\
>                 (1 << SIGSYS)   |\
> -               (1 << SIGUNUSED)|\
>                 (1 << SIGSTKFLT)|\
>                 (1 << SIGPWR)    \
>         )
> diff --git a/test/zdtm/static/pthread01.c b/test/zdtm/static/pthread01.c
> index 52f849c0..2520fcfe 100644
> --- a/test/zdtm/static/pthread01.c
> +++ b/test/zdtm/static/pthread01.c
> @@ -43,7 +43,7 @@ static char *decode_signal(const sigset_t *s, char *buf)
>         COLLECT(SIGTERM); COLLECT(SIGSTKFLT); COLLECT(SIGCHLD); COLLECT(SIGCONT); COLLECT(SIGSTOP);
>         COLLECT(SIGTSTP); COLLECT(SIGTTIN); COLLECT(SIGTTOU); COLLECT(SIGURG); COLLECT(SIGXCPU);
>         COLLECT(SIGXFSZ); COLLECT(SIGVTALRM); COLLECT(SIGPROF); COLLECT(SIGWINCH); COLLECT(SIGIO);
> -       COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS); COLLECT(SIGUNUSED);
> +       COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS);
>  #undef COLLECT
>  
>         return buf;
> 
> 
> I can submit a real patch if this is the right approach.
> 
> With this patch I get following zdtm result:
> 
> ################### 10 TEST(S) FAILED (TOTAL 294/SKIPPED 26) ###################
>  * zdtm/static/del_standalone_un(h)
>  * zdtm/static/cgroup_stray(h)
>  * zdtm/static/cgroup02(h)
>  * zdtm/static/cgroupns(h)
>  * zdtm/static/cgroup01(h)
>  * zdtm/static/cgroup00(h)
>  * zdtm/static/socket-tcp-syn-sent(h)
>  * zdtm/static/cgroup04(h)
>  * zdtm/static/deleted_unix_sock(h)
>  * zdtm/static/cgroup03(h)
> ##################################### FAIL #####################################
> 
> All cgroup related tests are hanging and I had to kill criu
> manually.

This must have been issue with unified hier.
Would you try the patch "[PATCH] cgroup: Skip unified hier controllers"?

-- Pavel
Adrian Reber June 29, 2017, 11:01 a.m.
On Thu, Jun 29, 2017 at 01:21:11PM +0300, Pavel Emelyanov wrote:
> > ################### 10 TEST(S) FAILED (TOTAL 294/SKIPPED 26) ###################
> >  * zdtm/static/del_standalone_un(h)
> >  * zdtm/static/cgroup_stray(h)
> >  * zdtm/static/cgroup02(h)
> >  * zdtm/static/cgroupns(h)
> >  * zdtm/static/cgroup01(h)
> >  * zdtm/static/cgroup00(h)
> >  * zdtm/static/socket-tcp-syn-sent(h)
> >  * zdtm/static/cgroup04(h)
> >  * zdtm/static/deleted_unix_sock(h)
> >  * zdtm/static/cgroup03(h)
> > ##################################### FAIL #####################################
> > 
> > All cgroup related tests are hanging and I had to kill criu
> > manually.
> 
> This must have been issue with unified hier.
> Would you try the patch "[PATCH] cgroup: Skip unified hier controllers"?

The patch still works and it already has my:

Reported-and-tested-by: Adrian Reber <adrian@lisas.de>

I would really like to see this patch merged as without it criu is
broken on Fedora since a while.

With your cgroups patch I get:

################### 2 TEST(S) FAILED (TOTAL 313/SKIPPED 25) ####################
 * zdtm/static/del_standalone_un(h)
 * zdtm/static/deleted_unix_sock(h)
##################################### FAIL #####################################

		Adrian
Pavel Emelianov June 29, 2017, 11:11 a.m.
On 06/29/2017 02:01 PM, Adrian Reber wrote:
> On Thu, Jun 29, 2017 at 01:21:11PM +0300, Pavel Emelyanov wrote:
>>> ################### 10 TEST(S) FAILED (TOTAL 294/SKIPPED 26) ###################
>>>  * zdtm/static/del_standalone_un(h)
>>>  * zdtm/static/cgroup_stray(h)
>>>  * zdtm/static/cgroup02(h)
>>>  * zdtm/static/cgroupns(h)
>>>  * zdtm/static/cgroup01(h)
>>>  * zdtm/static/cgroup00(h)
>>>  * zdtm/static/socket-tcp-syn-sent(h)
>>>  * zdtm/static/cgroup04(h)
>>>  * zdtm/static/deleted_unix_sock(h)
>>>  * zdtm/static/cgroup03(h)
>>> ##################################### FAIL #####################################
>>>
>>> All cgroup related tests are hanging and I had to kill criu
>>> manually.
>>
>> This must have been issue with unified hier.
>> Would you try the patch "[PATCH] cgroup: Skip unified hier controllers"?
> 
> The patch still works and it already has my:
> 
> Reported-and-tested-by: Adrian Reber <adrian@lisas.de>
> 
> I would really like to see this patch merged as without it criu is
> broken on Fedora since a while.

:) Andrey should merge it right at once.

> With your cgroups patch I get:
> 
> ################### 2 TEST(S) FAILED (TOTAL 313/SKIPPED 25) ####################
>  * zdtm/static/del_standalone_un(h)
>  * zdtm/static/deleted_unix_sock(h)
> ##################################### FAIL #####################################

I've seen those failures some time ago too. IIRC it was missing some 'chmod +x'-s 
on either test/ dir or some dir beneath it (or all of it). Let me check.

-- Pavel
Dmitry Safonov June 29, 2017, 11:19 a.m.
On 06/29/2017 01:21 PM, Pavel Emelyanov wrote:
> On 06/29/2017 10:13 AM, Adrian Reber wrote:
>> Trying to upgrade the criu package on Fedora I ran into a build failure
>> on Fedora rawhide (development branch).
>>
>> https://kojipkgs.fedoraproject.org//work/tasks/3909/20233909/build.log
>>
>> The next pre-release of glibc (2.25.90) is part of that Fedora branch
>> and glibc removed SIGUNUSED from bits/signum.h:
>>
>> criu/cr-restore.c: In function 'sig_fatal':
>> criu/cr-restore.c:900:9: error: 'SIGUNUSED' undeclared (first use in this function); did you mean 'SI_USER'?
>>     (1 << SIGUNUSED)|\
>>           ^
>> criu/cr-restore.c:907:41: note: in expansion of macro 'SIG_FATAL_MASK'
>>    return (sig > 0) && (sig < SIGMAX) && (SIG_FATAL_MASK & (1UL << sig));
>>                                           ^~~~~~~~~~~~~~
>> criu/cr-restore.c:900:9: note: each undeclared identifier is reported only once for each function it appears in
>>     (1 << SIGUNUSED)|\
>>           ^
>> criu/cr-restore.c:907:41: note: in expansion of macro 'SIG_FATAL_MASK'
>>    return (sig > 0) && (sig < SIGMAX) && (SIG_FATAL_MASK & (1UL << sig));
>>                                           ^~~~~~~~~~~~~~
>> criu/cr-restore.c:908:1: warning: control reaches end of non-void function [-Wreturn-type]
>>   }
>>   ^
>> make[2]: *** [/builddir/build/BUILD/criu-3.2.1/scripts/nmk/scripts/build.mk:111: criu/cr-restore.o] Error 1
>> make[1]: *** [criu/Makefile:73: criu/built-in.o] Error 2
>> make: *** [Makefile:218: criu] Error 2
>>
>> According to a glibc developer SIGSYS returns the same value as
>> SIGUNUSED. Not sure if that is the right fix for criu
> 
> Cc-ing Dima.

Looks good to me,
SIGUNUSED is the same to SIGSYS, so we can easily remove it.

Reviewed-by: Dmitry Safonov <dsafonov@virtuozzo.com>

> 
>> https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8082d91e1c449e0cb137468b731004a5e605c8c6
>>
>>
>> diff --git a/criu/cr-restore.c b/criu/cr-restore.c
>> index cfc8f504..7e11c8c5 100644
>> --- a/criu/cr-restore.c
>> +++ b/criu/cr-restore.c
>> @@ -897,7 +897,6 @@ static void zombie_prepare_signals(void)
>>                  (1 << SIGPOLL)  |\
>>                  (1 << SIGIO)    |\
>>                  (1 << SIGSYS)   |\
>> -               (1 << SIGUNUSED)|\
>>                  (1 << SIGSTKFLT)|\
>>                  (1 << SIGPWR)    \
>>          )
>> diff --git a/test/zdtm/static/pthread01.c b/test/zdtm/static/pthread01.c
>> index 52f849c0..2520fcfe 100644
>> --- a/test/zdtm/static/pthread01.c
>> +++ b/test/zdtm/static/pthread01.c
>> @@ -43,7 +43,7 @@ static char *decode_signal(const sigset_t *s, char *buf)
>>          COLLECT(SIGTERM); COLLECT(SIGSTKFLT); COLLECT(SIGCHLD); COLLECT(SIGCONT); COLLECT(SIGSTOP);
>>          COLLECT(SIGTSTP); COLLECT(SIGTTIN); COLLECT(SIGTTOU); COLLECT(SIGURG); COLLECT(SIGXCPU);
>>          COLLECT(SIGXFSZ); COLLECT(SIGVTALRM); COLLECT(SIGPROF); COLLECT(SIGWINCH); COLLECT(SIGIO);
>> -       COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS); COLLECT(SIGUNUSED);
>> +       COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS);
>>   #undef COLLECT
>>   
>>          return buf;
>>
>>
>> I can submit a real patch if this is the right approach.
>>
>> With this patch I get following zdtm result:
>>
>> ################### 10 TEST(S) FAILED (TOTAL 294/SKIPPED 26) ###################
>>   * zdtm/static/del_standalone_un(h)
>>   * zdtm/static/cgroup_stray(h)
>>   * zdtm/static/cgroup02(h)
>>   * zdtm/static/cgroupns(h)
>>   * zdtm/static/cgroup01(h)
>>   * zdtm/static/cgroup00(h)
>>   * zdtm/static/socket-tcp-syn-sent(h)
>>   * zdtm/static/cgroup04(h)
>>   * zdtm/static/deleted_unix_sock(h)
>>   * zdtm/static/cgroup03(h)
>> ##################################### FAIL #####################################
>>
>> All cgroup related tests are hanging and I had to kill criu
>> manually.
> 
> This must have been issue with unified hier.
> Would you try the patch "[PATCH] cgroup: Skip unified hier controllers"?
> 
> -- Pavel
>
Pavel Emelianov June 29, 2017, 11:26 a.m.
>> With your cgroups patch I get:
>>
>> ################### 2 TEST(S) FAILED (TOTAL 313/SKIPPED 25) ####################
>>  * zdtm/static/del_standalone_un(h)
>>  * zdtm/static/deleted_unix_sock(h)
>> ##################################### FAIL #####################################
> 
> I've seen those failures some time ago too. IIRC it was missing some 'chmod +x'-s 
> on either test/ dir or some dir beneath it (or all of it). Let me check.

Hm :( Even stat()-ing the path the test tries to bind to doesn't work. The
reason for that is that test is run with non-root privileges and the directory
you have your sources in is not accessible by non-root.

Gents, what do you think would be better -- raising this test's priviledges,
so that it runs as root, or limiting the flavor, so that it runs as non-root
but in namespaces?

-- Pavel
Adrian Reber June 29, 2017, 1:48 p.m.
On Thu, Jun 29, 2017 at 02:11:37PM +0300, Pavel Emelyanov wrote:
> > With your cgroups patch I get:
> > 
> > ################### 2 TEST(S) FAILED (TOTAL 313/SKIPPED 25) ####################
> >  * zdtm/static/del_standalone_un(h)
> >  * zdtm/static/deleted_unix_sock(h)
> > ##################################### FAIL #####################################
> 
> I've seen those failures some time ago too. IIRC it was missing some 'chmod +x'-s 
> on either test/ dir or some dir beneath it (or all of it). Let me check.

I remember it now also. After some chmod-ing all tests pass.

		Adrian
Andrey Vagin July 6, 2017, 5:12 a.m.
Applied, thanks!

On Thu, Jun 29, 2017 at 09:13:01AM +0200, Adrian Reber wrote:
> Trying to upgrade the criu package on Fedora I ran into a build failure
> on Fedora rawhide (development branch).
> 
> https://kojipkgs.fedoraproject.org//work/tasks/3909/20233909/build.log
> 
> The next pre-release of glibc (2.25.90) is part of that Fedora branch
> and glibc removed SIGUNUSED from bits/signum.h:
> 
> criu/cr-restore.c: In function 'sig_fatal':
> criu/cr-restore.c:900:9: error: 'SIGUNUSED' undeclared (first use in this function); did you mean 'SI_USER'?
>    (1 << SIGUNUSED)|\
>          ^
> criu/cr-restore.c:907:41: note: in expansion of macro 'SIG_FATAL_MASK'
>   return (sig > 0) && (sig < SIGMAX) && (SIG_FATAL_MASK & (1UL << sig));
>                                          ^~~~~~~~~~~~~~
> criu/cr-restore.c:900:9: note: each undeclared identifier is reported only once for each function it appears in
>    (1 << SIGUNUSED)|\
>          ^
> criu/cr-restore.c:907:41: note: in expansion of macro 'SIG_FATAL_MASK'
>   return (sig > 0) && (sig < SIGMAX) && (SIG_FATAL_MASK & (1UL << sig));
>                                          ^~~~~~~~~~~~~~
> criu/cr-restore.c:908:1: warning: control reaches end of non-void function [-Wreturn-type]
>  }
>  ^
> make[2]: *** [/builddir/build/BUILD/criu-3.2.1/scripts/nmk/scripts/build.mk:111: criu/cr-restore.o] Error 1
> make[1]: *** [criu/Makefile:73: criu/built-in.o] Error 2
> make: *** [Makefile:218: criu] Error 2
> 
> According to a glibc developer SIGSYS returns the same value as
> SIGUNUSED. Not sure if that is the right fix for criu
> 
> https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=8082d91e1c449e0cb137468b731004a5e605c8c6
> 
> 
> diff --git a/criu/cr-restore.c b/criu/cr-restore.c
> index cfc8f504..7e11c8c5 100644
> --- a/criu/cr-restore.c
> +++ b/criu/cr-restore.c
> @@ -897,7 +897,6 @@ static void zombie_prepare_signals(void)
>                 (1 << SIGPOLL)  |\
>                 (1 << SIGIO)    |\
>                 (1 << SIGSYS)   |\
> -               (1 << SIGUNUSED)|\
>                 (1 << SIGSTKFLT)|\
>                 (1 << SIGPWR)    \
>         )
> diff --git a/test/zdtm/static/pthread01.c b/test/zdtm/static/pthread01.c
> index 52f849c0..2520fcfe 100644
> --- a/test/zdtm/static/pthread01.c
> +++ b/test/zdtm/static/pthread01.c
> @@ -43,7 +43,7 @@ static char *decode_signal(const sigset_t *s, char *buf)
>         COLLECT(SIGTERM); COLLECT(SIGSTKFLT); COLLECT(SIGCHLD); COLLECT(SIGCONT); COLLECT(SIGSTOP);
>         COLLECT(SIGTSTP); COLLECT(SIGTTIN); COLLECT(SIGTTOU); COLLECT(SIGURG); COLLECT(SIGXCPU);
>         COLLECT(SIGXFSZ); COLLECT(SIGVTALRM); COLLECT(SIGPROF); COLLECT(SIGWINCH); COLLECT(SIGIO);
> -       COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS); COLLECT(SIGUNUSED);
> +       COLLECT(SIGPOLL); COLLECT(SIGPWR); COLLECT(SIGSYS);
>  #undef COLLECT
>  
>         return buf;
> 
> 
> I can submit a real patch if this is the right approach.
> 
> With this patch I get following zdtm result:
> 
> ################### 10 TEST(S) FAILED (TOTAL 294/SKIPPED 26) ###################
>  * zdtm/static/del_standalone_un(h)
>  * zdtm/static/cgroup_stray(h)
>  * zdtm/static/cgroup02(h)
>  * zdtm/static/cgroupns(h)
>  * zdtm/static/cgroup01(h)
>  * zdtm/static/cgroup00(h)
>  * zdtm/static/socket-tcp-syn-sent(h)
>  * zdtm/static/cgroup04(h)
>  * zdtm/static/deleted_unix_sock(h)
>  * zdtm/static/cgroup03(h)
> ##################################### FAIL #####################################
> 
> All cgroup related tests are hanging and I had to kill criu
> manually.
> 
> 		Adrian
> _______________________________________________
> CRIU mailing list
> CRIU@openvz.org
> https://lists.openvz.org/mailman/listinfo/criu