[CRIU] Compile errors with 4.18 kernels

Andrei Vagin avagin at virtuozzo.com
Fri Jun 15 10:14:18 MSK 2018


On Thu, Jun 14, 2018 at 10:50:56PM +0100, Radostin Stoyanov wrote:
> On 14/06/18 19:20, Adrian Reber wrote:
> > As I see it also in travis (https://api.travis-ci.org/v3/job/392077603/log.txt)
> > I guess it is known that currently compilation fails on early 4.18
> > kernels.
> >
> >   CC       criu/pie/parasite.o
> > In file included from /usr/include/asm/signal.h:7,
> >                  from /usr/include/linux/signal.h:5,
> >                  from /usr/include/linux/aio_abi.h:32,
> >                  from criu/include/aio.h:4,
> >                  from criu/pie/parasite.c:22:
> > /usr/include/linux/time.h:10:8: error: redefinition of ‘struct timespec’
> >
> > (and more)
> >
> > Is this a bug in the kernel or does it need a fix in CRIU? Just curious
> > if somebody is looking into it?
> The problem comes from the commit below, which includes <linux/signal.h>
> in linux/aio_abi.h
>    
> https://github.com/torvalds/linux/commit/7a074e96dee62586c935c80cecd931431bfdd0be#diff-590a640c13a8f3a134e57b84f5c4fb79
> 
> I will try to fix it and I will send a patch.

I suggest to report this problem into lkml.
Here is a minimal reproducer:

[root at b5766979408e /]# cat test.c
#include <signal.h>
#include <linux/aio_abi.h>


int main()
{
	return 0;
}


[root at b5766979408e /]# gcc -Wall test.c
In file included from /usr/include/asm/signal.h:7,
                 from /usr/include/linux/signal.h:5,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/linux/time.h:10:8: error: redefinition of 'struct timespec'
 struct timespec {
        ^~~~~~~~
In file included from /usr/include/signal.h:53,
                 from test.c:1:
/usr/include/bits/types/struct_timespec.h:8:8: note: originally defined
here
 struct timespec
        ^~~~~~~~
In file included from /usr/include/linux/signal.h:5,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/asm/signal.h:16:23: error: conflicting types for 'sigset_t'
 typedef unsigned long sigset_t;
                       ^~~~~~~~
In file included from /usr/include/signal.h:35,
                 from test.c:1:
/usr/include/bits/types/sigset_t.h:7:20: note: previous declaration of
'sigset_t' was here
 typedef __sigset_t sigset_t;
                    ^~~~~~~~
In file included from /usr/include/linux/signal.h:5,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/asm/signal.h:115:8: error: redefinition of 'struct
sigaction'
 struct sigaction {
        ^~~~~~~~~
In file included from /usr/include/signal.h:226,
                 from test.c:1:
/usr/include/bits/sigaction.h:27:8: note: originally defined here
 struct sigaction
        ^~~~~~~~~
/usr/include/asm/signal.h:116:17: error: expected ':', ',', ';', '}' or
'__attribute__' before '.' token
  __sighandler_t sa_handler;
                 ^~~~~~~~~~
In file included from /usr/include/linux/signal.h:5,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/asm/signal.h:128:3: error: conflicting types for 'stack_t'
 } stack_t;
   ^~~~~~~
In file included from /usr/include/signal.h:303,
                 from test.c:1:
/usr/include/bits/types/stack_t.h:31:5: note: previous declaration of
'stack_t' was here
   } stack_t;
     ^~~~~~~
In file included from /usr/include/asm/siginfo.h:15,
                 from /usr/include/linux/signal.h:6,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/asm-generic/siginfo.h:8:15: error: redefinition of 'union
sigval'
 typedef union sigval {
               ^~~~~~
In file included from /usr/include/bits/types/siginfo_t.h:6,
                 from /usr/include/signal.h:57,
                 from test.c:1:
/usr/include/bits/types/__sigval_t.h:24:7: note: originally defined here
 union sigval
       ^~~~~~
In file included from /usr/include/asm/siginfo.h:15,
                 from /usr/include/linux/signal.h:6,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/asm-generic/siginfo.h:11:3: error: conflicting types for
'sigval_t'
 } sigval_t;
   ^~~~~~~~
In file included from /usr/include/signal.h:62,
                 from test.c:1:
/usr/include/bits/types/sigval_t.h:16:20: note: previous declaration of
'sigval_t' was here
 typedef __sigval_t sigval_t;
                    ^~~~~~~~
In file included from /usr/include/asm/siginfo.h:15,
                 from /usr/include/linux/signal.h:6,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/asm-generic/siginfo.h:133:24: error: conflicting types for
'siginfo_t'
 } __ARCH_SI_ATTRIBUTES siginfo_t;
                        ^~~~~~~~~
In file included from /usr/include/signal.h:57,
                 from test.c:1:
/usr/include/bits/types/siginfo_t.h:124:5: note: previous declaration of
'siginfo_t' was here
   } siginfo_t __SI_ALIGNMENT;
     ^~~~~~~~~
In file included from /usr/include/asm/siginfo.h:15,
                 from /usr/include/linux/signal.h:6,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/asm-generic/siginfo.h:313:16: error: redefinition of
'struct sigevent'
 typedef struct sigevent {
                ^~~~~~~~
In file included from /usr/include/signal.h:66,
                 from test.c:1:
/usr/include/bits/types/sigevent_t.h:22:16: note: originally defined
here
 typedef struct sigevent
                ^~~~~~~~
In file included from /usr/include/asm/siginfo.h:15,
                 from /usr/include/linux/signal.h:6,
                 from /usr/include/linux/aio_abi.h:32,
                 from test.c:2:
/usr/include/asm-generic/siginfo.h:326:3: error: conflicting types for
'sigevent_t'
 } sigevent_t;
   ^~~~~~~~~~
In file included from /usr/include/signal.h:66,
                 from test.c:1:
/usr/include/bits/types/sigevent_t.h:42:5: note: previous declaration of
'sigevent_t' was here
   } sigevent_t;
     ^~~~~~~~~~

[root at b5766979408e /]# cat /etc/redhat-release 
Fedora release 29 (Rawhide)

> 
> Radostin
> > 		Adrian
> > _______________________________________________
> > CRIU mailing list
> > CRIU at openvz.org
> > https://lists.openvz.org/mailman/listinfo/criu
> 

> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu



More information about the CRIU mailing list