[CRIU] zdtm test build failure on s390x (s390x_regs_check.c)
Adrian Reber
adrian at lisas.de
Wed Sep 6 18:49:30 MSK 2017
On Tue, Sep 05, 2017 at 07:47:26PM +0200, Michael Holzheu wrote:
> On Tue, 5 Sep 2017 17:56:08 +0200
> Adrian Reber <adrian at lisas.de> wrote:
>
> > When running 'make zdtm' on s390x it fails on my RHEL kernel with:
> >
> > make[3]: Leaving directory `/tmp/criu/test/zdtm/lib'
> > CC s390x_regs_check.o
> > s390x_regs_check.c: In function ‘util_hexdump_grp’:
> > s390x_regs_check.c:214:7: error: ‘ptr’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
> > ptr += sprintf(ptr, "%02x", buf[i]);
> > ^
>
> Obviously the compiler does not understand the "if (first)" construct.
>
> I assume the following will fix the problem:
> ---
> [CRIU][PATCH] zdtm/s390x_regs_check: Fix compiler warning
>
> When running 'make zdtm' on s390x it fails on RHEL7 with:
>
> make[3]: Leaving directory `/tmp/criu/test/zdtm/lib'
> CC s390x_regs_check.o
> s390x_regs_check.c: In function "util_hexdump_grp":
> s390x_regs_check.c:214:7: error: "ptr" may be used uninitialized
> in this function [-Werror=maybe-uninitialized]
> ptr += sprintf(ptr, "%02x", buf[i]);
>
> Fix this and assign ptr from the beginning to help gcc.
>
> Signed-off-by: Michael Holzheu <holzheu at linux.vnet.ibm.com>
> ---
> test/zdtm/static/s390x_regs_check.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/test/zdtm/static/s390x_regs_check.c b/test/zdtm/static/s390x_regs_check.c
> index a92679a..1a7e841 100644
> --- a/test/zdtm/static/s390x_regs_check.c
> +++ b/test/zdtm/static/s390x_regs_check.c
> @@ -198,8 +198,8 @@ struct reg_set *reg_set_vec[] = {
> void util_hexdump_grp(const char *tag, const void *data, int grp,
> int count, int indent)
> {
> + char str[1024], *ptr = str;
> const char *buf = data;
> - char str[1024], *ptr;
> int i, first = 1;
>
> for (i = 0; i < count; i++) {
> --
> 2.7.4
Thanks the patch works. Now it compiles without errors. But...
The test seems to hang. criu never starts in zdtm.py to do the actual
dump. In the output file I see:
11:48:08.040: 45159: ------------- START 1 PROCESS + 2 THREADS ---------------
11:48:08.080: 45159: STARTED: pid = 45160
11:48:08.149: 45159: STARTED: pid = 45162
11:48:08.149: 45159: STARTED: pid = 45161
11:48:08.149: 45159: ---------------------- SET REGISTERS --------------------
11:48:08.149: 45159: SET: pid = 45160
11:48:08.174: 45159: REGSET: PRFPREG -> DONE
11:48:08.174: 45159: REGSET: VXRS_LOW -> not supported by machine
11:48:08.174: 45159: REGSET: VXRS_HIGH -> not supported by machine
11:48:08.174: 45159: SET: pid = 45162
One of the three process uses 100% CPU and that is how the process tree looks like:
45166 pts/0 S+ 0:00 | \_ python2 ./zdtm.py run -f h,ns -t zdtm/static/s390x_regs_check
45176 pts/0 S+ 0:00 | \_ ./zdtm_ct zdtm.py
45179 pts/0 S+ 0:00 | | \_ python2 zdtm.py
45182 pts/0 S+ 0:00 | | \_ python2 zdtm.py
45199 pts/0 S+ 0:00 | | \_ make --no-print-directory -C zdtm/static s390x_regs_check.pid
45214 pts/0 S+ 0:00 | | \_ ./s390x_regs_check --pidfile=s390x_regs_check.pid --outfile=s390x_regs_check.out
45215 ? Ss 0:00 | | \_ ./s390x_regs_check --pidfile=s390x_regs_check.pid --outfile=s390x_regs_check.out
45216 ? Rl 0:16 | | \_ ./s390x_regs_check --pidfile=s390x_regs_check.pid --outfile=s390x_regs_check.out
45219 pts/0 R+ 0:00 | \_ ps axf
Adrian
More information about the CRIU
mailing list